반응형
여러 로우의 데이터를 한개의 로우 데이터로 출력해보자 (세로 데이터 가로 한줄로 출력)
STUFF , FOR XML PATH
SELECT STUFF((SELECT ',' + 컬럼명 FROM A FOR XML PATH ('')), 1, 1, '') AS '가로출력'
FROM 테이블명
예제
NAME |
손꽁쥐 |
윤선생 |
황박사 |
위의 데이터를 아래와 같이 한줄로 출력하고자 한다
NAME |
손꽁쥐, 윤선생, 황박사 |
WITH TABLE_A (NAME) AS (
SELECT '손꽁쥐' UNION ALL
SELECT '윤선생' UNION ALL
SELECT '황박사'
)
SELECT TOP 1 STUFF((SELECT ',' + NAME FROM TABLE_A FOR XML PATH('')), 1, 1, '') AS '결과'
FROM TABLE_A
예제2
컬럼1을 기준으로 그룹으로 묶어서 컬럼1의 값이 동일한 컬럼2의 값들만 가로로 출력해보자.
CLASS | NAME |
A | 손꽁쥐 |
B | 윤선생 |
A | 황박사 |
위와 같은 데이터가 있을때, 같은 CLASS끼리 학생들을 묶어서 출력해보자
WITH TABLE_A (CLASS, NAME) AS (
SELECT 'A', '손꽁쥐' UNION ALL
SELECT 'B', '윤선생' UNION ALL
SELECT 'A', '황박사'
)
SELECT * FROM
(
SELECT CLASS, STUFF((SELECT ',' + NAME FROM TABLE_A WHERE CLASS = A.CLASS FOR XML PATH('')), 1, 1, '') AS 'Result'
FROM TABLE_A AS A
) A
GROUP BY A.CLASS, A.Result
[MSSQL] 문자열 치환함수 (REPLACE, STUFF)
반응형
'프로그래밍 > MSSQL' 카테고리의 다른 글
[MSSQL] OUTPUT INSERTED, DELETED 데이터 수정 및 삭제 전 백업 (1) | 2019.10.02 |
---|---|
[MSSQL] COUNT(*) COUNT(1), COUNT(컬럼명) 행의 개수 (1) | 2019.10.01 |
[MSSQL] COUNT CASE (조건 카운트) COUNT DISTINCT (중복제거 카운트) (2) | 2019.09.29 |
[MSSQL] CONVERT, CAST 형변환 함수 (0) | 2019.09.29 |
[MSSQL] ROUND, CEILING, FLOOR (소수점 반올림, 올림, 버림) (0) | 2019.09.29 |