반응형
SQL Server에서 여러 행에서 하나의 쉼표로 구분된 값 사용
SQL Server에서 쉼표로 구분된 값으로 데이터를 반환하는 테이블 값 함수를 만들고 싶습니다.
예: 표:tbl
ID | Value
---+-------
1 | 100
1 | 200
1 | 300
1 | 400
이제 함수를 사용하여 쿼리를 실행할 때Func1(value)
SELECT Func1(Value)
FROM tbl
WHERE ID = 1
원하는 출력은 다음과 같습니다.100,200,300,400
테스트 데이터
DECLARE @Table1 TABLE(ID INT, Value INT)
INSERT INTO @Table1 VALUES (1,100),(1,200),(1,300),(1,400)
쿼리
SELECT ID
,STUFF((SELECT ', ' + CAST(Value AS VARCHAR(10)) [text()]
FROM @Table1
WHERE ID = t.ID
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,' ') List_Output
FROM @Table1 t
GROUP BY ID
결과 세트
╔════╦═════════════════════╗
║ ID ║ List_Output ║
╠════╬═════════════════════╣
║ 1 ║ 100, 200, 300, 400 ║
╚════╩═════════════════════╝
SQL Server 2017 이후 버전
SQL Server 2017 이후 버전에서 작업하는 경우 내장된 SQL Server Function STRING_AGG를 사용하여 쉼표로 구분된 목록을 만들 수 있습니다.
DECLARE @Table1 TABLE(ID INT, Value INT);
INSERT INTO @Table1 VALUES (1,100),(1,200),(1,300),(1,400);
SELECT ID , STRING_AGG([Value], ', ') AS List_Output
FROM @Table1
GROUP BY ID;
결과 세트
╔════╦═════════════════════╗
║ ID ║ List_Output ║
╠════╬═════════════════════╣
║ 1 ║ 100, 200, 300, 400 ║
╚════╩═════════════════════╝
언급URL : https://stackoverflow.com/questions/21760969/multiple-rows-to-one-comma-separated-value-in-sql-server
반응형
'programing' 카테고리의 다른 글
| SQL Server에 IP 주소를 저장하기 위한 데이터 유형 (0) | 2023.04.09 |
|---|---|
| 의 , 어떻게 수? 의 , 어떻게 수? 의 , 어떻게 수? (0) | 2023.04.09 |
| 현재 Git 작업 트리에서 로컬(추적되지 않은) 파일을 제거하려면 어떻게 해야 합니까? (0) | 2023.04.09 |
| python xlrd 형식이 지원되지 않거나 파일이 손상되었습니다. (0) | 2023.04.09 |
| 문자열의 마지막 문자 삭제 (0) | 2023.04.09 |