728x90
반응형
질문 : SQL Server에서 여러 행의 텍스트를 단일 텍스트 문자열로 연결하는 방법은 무엇입니까?
세 개의 행이있는 이름을 보유하는 데이터베이스 테이블을 고려하십시오.
Peter Paul Mary
Peter, Paul, Mary
의 단일 문자열로 바꾸는 쉬운 방법이 있습니까?
답변
SQL Server 2017 또는 Azure를 사용하는 경우 Mathieu Renda 답변을 참조하세요.
일대 다 관계로 두 테이블을 조인하려고 할 때 비슷한 문제가 발생했습니다. XML PATH
메서드가 행의 연결을 매우 쉽게 처리 할 수 있음을 발견했습니다.
STUDENTS
라는 테이블이있는 경우
SubjectID StudentName
---------- -------------
1 Mary
1 John
1 Sam
2 Alaina
2 Edward
예상 한 결과는 다음과 같습니다.
SubjectID StudentName
---------- -------------
1 Mary, John, Sam
2 Alaina, Edward
다음 T-SQL
.
SELECT Main.SubjectID,
LEFT(Main.Students,Len(Main.Students)-1) As "Students"
FROM
(
SELECT DISTINCT ST2.SubjectID,
(
SELECT ST1.StudentName + ',' AS [text()]
FROM dbo.Students ST1
WHERE ST1.SubjectID = ST2.SubjectID
ORDER BY ST1.SubjectID
FOR XML PATH ('')
) [Students]
FROM dbo.Students ST2
) [Main]
substring
을 사용하여 첫 번째 문자열을 건너 뛰어 하위 쿼리를 수행 할 필요가없는 경우 더 간결한 방식으로 동일한 작업을 수행 할 수 있습니다.
SELECT DISTINCT ST2.SubjectID,
SUBSTRING(
(
SELECT ','+ST1.StudentName AS [text()]
FROM dbo.Students ST1
WHERE ST1.SubjectID = ST2.SubjectID
ORDER BY ST1.SubjectID
FOR XML PATH ('')
), 2, 1000) [Students]
FROM dbo.Students ST2
출처 : https://stackoverflow.com/questions/194852/how-to-concatenate-text-from-multiple-rows-into-a-single-text-string-in-sql-serv
728x90
반응형
'프로그래밍 언어 > Database' 카테고리의 다른 글
PostgreSQL에서 데이터베이스 복사본 생성 (0) | 2021.06.14 |
---|---|
psql에서 데이터베이스를 전환하는 방법 (0) | 2021.06.14 |
데이터베이스, 테이블 및 열 명명 규칙? (0) | 2021.06.13 |
ATTACH로 열린 SQLite 데이터베이스 파일의 테이블을 나열하는 방법 (0) | 2021.06.12 |
SQL Server의 기존 테이블에 기본값이있는 열 추가 (0) | 2021.06.12 |