여러 행으로 되어 있는 데이터들을 1개의 열로 바꾸는 구문
CREATE TABLE TMP_TBL (
SEQ INT IDENTITY(1, 1),
GROUPID INT,
C_VAL VARCHAR(10),
T_VAL VARCHAR(10),
M_VAL VARCHAR(10),
REG_DT DATETIME DEFAULT(GETDATE())
)
INSERT INTO TMP_TBL (GROUPID, C_VAL, T_VAL, M_VAL) VALUES ('1', '1111', 'TTTT', 'MMMM');
INSERT INTO TMP_TBL (GROUPID, C_VAL, T_VAL, M_VAL) VALUES ('1', '2222', '1212', 'MMMM');
INSERT INTO TMP_TBL (GROUPID, C_VAL, T_VAL, M_VAL) VALUES ('1', '3333', '3232', 'MMMM');
INSERT INTO TMP_TBL (GROUPID, C_VAL, T_VAL, M_VAL) VALUES ('2', 'ABC', 'SSS', '333');
INSERT INTO TMP_TBL (GROUPID, C_VAL, T_VAL, M_VAL) VALUES ('2', 'DDD', 'WWW', '333');
INSERT INTO TMP_TBL (GROUPID, C_VAL, T_VAL, M_VAL) VALUES ('2', 'CCC', 'QQQ', '333');
INSERT INTO TMP_TBL (GROUPID, C_VAL, T_VAL, M_VAL) VALUES ('3', 'DSFSD', '32131', 'QWEWQEWQ');
INSERT INTO TMP_TBL (GROUPID, C_VAL, T_VAL, M_VAL) VALUES ('3', 'FDS', '32131', 'DDDDSS');
INSERT INTO TMP_TBL (GROUPID, C_VAL, T_VAL, M_VAL) VALUES ('3', 'DSFSD', 'SSSSS', 'QWEWQEWQ');
SELECT GROUPID,
STUFF((SELECT DISTINCT ',' + C_VAL FROM TMP_TBL AS BBB WHERE BBB.GROUPID = AAA.GROUPID FOR XML PATH('')), 1, 1, '') AS C_VAL,
STUFF((SELECT DISTINCT ',' + T_VAL FROM TMP_TBL AS BBB WHERE BBB.GROUPID = AAA.GROUPID FOR XML PATH('')), 1, 1, '') AS T_VAL,
STUFF((SELECT DISTINCT ',' + M_VAL FROM TMP_TBL AS BBB WHERE BBB.GROUPID = AAA.GROUPID FOR XML PATH('')), 1, 1, '') AS M_VAL
FROM TMP_TBL AS AAA
GROUP BY AAA.GROUPID
-- Result
GROUPID C_VAL T_VAL M_VAL
------------------------------------------------------------------------------------------
1 1111,2222,3333 1212,3232,TTTT MMMM
2 ABC,CCC,DDD QQQ,SSS,WWW 333
3 DSFSD,FDS 32131,SSSSS DDDDSS,QWEWQEWQ
(3개 행이 영향을 받음)
'DataBase > MSSql' 카테고리의 다른 글
| centos7 MSSQL 2019 설치 (0) | 2022.09.24 |
|---|---|
| MSSQL - Python 로컬에서 접속 (0) | 2019.08.04 |
| bulk insert (0) | 2019.07.07 |
| SQL 내부에서 Unicode로 변환하는 프로시저 (0) | 2019.06.22 |
| mssql 에서 메일 발송 (0) | 2019.06.22 |