반응형
    
    
    
  

여러 로우의 데이터를 한개의 로우 데이터로 출력해보자 (세로 데이터 가로 한줄로 출력)
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 |