| 1 | 안녕하세요 | A |
| 2 | 반가워요 | B |
| 3 | 즐거워요 | C |
상기와 같은 결과가 있다면
이걸 아래와 같이 쿼리하고 싶습니다.
즉 여러개의 ROW를 하나의 ROW안에 모두 넣고 싶어요
|
1 2 3 |
안녕하세요 반가워요 즐거워요 |
A B C |
SELECT string_agg(col1, '\n'), string_agg(col2, '\n'), string_agg(col3, '\n') FROM table_name;
테스트는 못해봤습니다.
sqlserver 2017 버전이상에서 string_agg 라는 컬럼 통합 내장함수가 있네요.
1. WITHIN GROUP 생략도 가능하네요.
2. 줄바꿈값 표현이 간결하네요.
위 신이만든지기님 쿼리나 제가 작성한 쿼리나 둘 다 엔터값이 제대로 표현되는 건지 모르겠네요?
SQL Server Management Studio 에서 수행했는데 엔터가 정확하게 표현되질 않네요?
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