MSSQL 여러 Row를 하나의 Row로 만들기 0 3 1,741

by 고재원 [SQL Query] [2022.04.28 11:56:02]


1 안녕하세요 A
2 반가워요 B
3 즐거워요 C

상기와 같은 결과가 있다면

이걸 아래와 같이 쿼리하고 싶습니다. 

즉 여러개의 ROW를 하나의 ROW안에 모두 넣고 싶어요

1

2

3

안녕하세요

반가워요

즐거워요

A

B

C

 

by 신이만든지기 [2022.04.28 13:09:21]
SELECT string_agg(col1, '\n'), string_agg(col2, '\n'), string_agg(col3, '\n')
FROM table_name;

테스트는 못해봤습니다. 

sqlserver 2017 버전이상에서 string_agg  라는 컬럼 통합 내장함수가 있네요.


by 마농 [2022.04.28 13:18:54]

1. WITHIN GROUP 생략도 가능하네요.
2. 줄바꿈값 표현이 간결하네요.
위 신이만든지기님 쿼리나 제가 작성한 쿼리나 둘 다 엔터값이 제대로 표현되는 건지 모르겠네요?
SQL Server Management Studio 에서 수행했는데 엔터가 정확하게 표현되질 않네요?


by 마농 [2022.04.28 13:13:08]
WITH t AS
(
SELECT 1 no, '안녕하세요' nm, 'A' cd
UNION ALL SELECT 2, '반가워요', 'B'
UNION ALL SELECT 3, '즐거워요', 'C'
)
SELECT STRING_AGG(no, CONCAT(CHAR(13), CHAR(10))) WITHIN GROUP(ORDER BY no) no
     , STRING_AGG(nm, CONCAT(CHAR(13), CHAR(10))) WITHIN GROUP(ORDER BY no) nm
     , STRING_AGG(cd, CONCAT(CHAR(13), CHAR(10))) WITHIN GROUP(ORDER BY no) cd
  FROM t
;
http://gurubee.net/article/55512

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입