본문 바로가기
  • [성공하는 개발자] - Developer

DataBase/MSSQL39

[MSSQL] 여러 행의 컬럼을 합치는 방법 SQL Server에서 여러 행(Row)의 컬럼 값을 하나로 합치기 위해서는 STUFF 함수와 FOR XML PATH 구문을 사용하면 된다. 오라클 SQL에서 XMLAGG, WM_CONCAT, LISTAGG 함수와 비슷한 기능을 수행한다. SQL Server 2017 이상 버전을 사용한다면 STRING_AGG 함수를 사용하면 된다. [MSSQL] STRING_AGG 함수 사용법 (컬럼 문자열 합치기) SELECT a.job , STUFF((SELECT ',' + ename FROM emp WHERE job = a.job FOR XML PATH('') ), 1, 1, '') AS enames FROM emp AS a GROUP BY a.job STUFF("문자열", "시작위치", "문자길이", "치환문자".. 2022. 4. 11.
[MSSQL] PIVOT 함수, 행을 열로 바꾸기 SQL Server에서 행을 열로 변환하기 위해서는 PIVOT() 함수를 이용하면 된다. 특히 그룹함수를 이용하여 통계를 추출할 때 많이 사용된다. SELECT * FROM ( 피벗할 쿼리문 ) AS result PIVOT ( 그룹합수(집계컬럼) FOR 피벗대상컬럼 IN ([피벗컬럼값] ... ) AS pivot_result 그룹함수는 SUM(), COUNT(), AVG() 등을 사용할 수 있다. 피벗컬럼값은 한번 지정하면 데이터가 존재하지 않아도 고정적으로 출력된다. 피벗컬럼값의 대괄호([ ])는 존재해야하며, FROM절과 PIVOT절의 별칭(result, pivot_result)은 꼭 붙여줘야 오류가 발생하지 않는다. | PIVOT 기본 사용법 - 직군별, 근무지별 급여 합계 SELECT * FROM.. 2022. 4. 11.
[MSSQL] STRING_SPLIT 함수, 구분자로 자르기 SQL Server 2016 부터 STRING_SPLIT() 함수가 추가되어 컬럼 문자열의 구분자를 행으로 분리 할 수 있다. 이전 버전까지 사용자 함수를 만들어서 사용했지는 STRING_SPLIT() 함수를 사용하면 쉽게 해결 된다. STRING_SPLIT( "문자열", "구분자" ) | 함수 사용법 SELECT empno , ename , skills , value FROM emp CROSS APPLY STRING_SPLIT(skills, ',') 조회된 skills 컬럼의 쉼표(',') 구분자를 잘라서 해당 개수만큼 행으로 변환한다. 결과 컬럼은 value로 생성된다. SELECT * FROM STRING_SPLIT('Java,Python,C++,C#', ',') FROM절에서 해당 함수를 사용할 .. 2022. 4. 11.
[MSSQL] 문자를 숫자 형식으로 변경 (CONVERT, TO_NUMBER) 문자(VARCHAR)를 숫자형식(타입)으로 변경하는 방법을 소개한다. numeric과 decimal 타입은 소수점 이하 값을 반올림한다. int, float 타입 보다는 numeric과 decimal 타입을 사용할 것을 권장하며 그 중에서도 decimal 타입을 사용할 것을 권장 한다고 한다. int : 정수 float : 부동소수점 numeric : 실수 decimal : 실수 (numeric 동일) numeric( [전체길이(소수점이하포함)], [소수점이하길이] ) decimal( [전체길이(소수점이하포함), [소수점이하길이] ) 문자 -> 숫자 변환 CONVERT( [숫자형], [값] ) SELECT CONVERT(int, '12') , CONVERT(float, '12.54321') , CONVE.. 2022. 2. 10.