본문 바로가기
Programing/MSSQL

MS-SQL에서 STRING_AGG 사용하기

by Benedictus711 2024. 11. 25.
728x90

STRING_AGG는 MSSQL에서 여러 행의 문자열 값을 하나의 문자열로 결합하는 데 사용하는 함수입니다. 이 함수는 SQL Server 2017부터 지원되며, 구분자를 지정하여 문자열을 원하는 형식으로 연결할 수 있습니다.

기본 구문

STRING_AGG(expression, separator)
  • expression: 결합할 문자열 값입니다.
  • separator: 문자열을 연결할 때 사용할 구분자입니다. 빈 문자열('')을 지정하면 구분자 없이 연결됩니다.

예제

1. 간단한 사용 예

Employees 테이블에서 각 부서별로 직원 이름을 쉼표로 구분된 문자열로 결합한다고 가정합니다.

SELECT 
    Department,
    STRING_AGG(Name, ', ') AS EmployeeNames
FROM Employees
GROUP BY Department;

결과 예시:

Department EmployeeNames
IT Alice, Bob, Charlie
HR Diana, Edward

2. 정렬 옵션 추가

STRING_AGG는 기본적으로 정렬되지 않습니다. 특정 순서대로 결합하려면 WITHIN GROUP (ORDER BY ...)을 사용해야 합니다.

SELECT 
    Department,
    STRING_AGG(Name, ', ') WITHIN GROUP (ORDER BY Name) AS EmployeeNames
FROM Employees
GROUP BY Department;

결과 예시:

Department EmployeeNames
IT Alice, Bob, Charlie
HR Diana, Edward

3. 중첩된 쿼리에서 사용

중첩된 쿼리를 사용하여 특정 조건에 맞는 데이터를 결합할 수도 있습니다.

SELECT 
    STRING_AGG(Name, ', ') AS AllEmployees
FROM Employees
WHERE Department = 'IT';

결과 예시:

AllEmployees
Alice, Bob, Charlie

주의사항

  1. STRING_AGG는 NULL 값을 무시합니다. 결합하려는 값 중 NULL이 포함되어 있으면 결과에 포함되지 않습니다.
  2. MSSQL 2017 이상에서만 사용 가능합니다. SQL Server 버전이 2017보다 낮다면 FOR XML PATH 또는 STUFF와 같은 대체 방법을 사용해야 합니다.

 

728x90

댓글