Row를 Column으로 변환 (PIVOT)

SELECT 컬럼명 FROM 테이블명

PIVOT ([집계함수] ([집계 컬럼명]) FOR [대상 컬럼명] IN ([컬럼이 될 값])) AS 피벗테이블명

=> 집계 함수 : SUM(합계), AVG(평균), COUNT(개수), MAX(최대), MIN(최소)

 

예)

DECLARE @SUBJECT VARCHAR(100);
WITH PIVOT_TABLE AS
(
 SELECT '1반' AS 반정보, '국어' AS 과목, 90 AS 점수
 UNION ALL
 SELECT '1반' AS 반정보, '수학' AS 과목, 80 AS 점수
 UNION ALL
 SELECT '2반' AS 반정보, '국어' AS 과목, 70 AS 점수
 UNION ALL
 SELECT '2반' AS 반정보, '수학' AS 과목, 60 AS 점수
 UNION ALL
 SELECT '3반' AS 반정보, '영어' AS 과목, 50 AS 점수
)

SELECT * FROM PIVOT_TABLE
PIVOT (SUM(점수) FOR 과목 IN ([국어], [수학], [영어])) AS PVT

 

 

Column를 Row으로 변환 (UNPIVOT)

SELECT 컬럼명 FROM 테이블명

UNPIVOT ([집계될 데이터의 컬럼명] FOR [UNPIVOT할 데이터의 컬럼명] IN ([UNPIVOT할 컬럼명])) AS 언피벗테이블명

 

예)

WITH UNPIVOT_TABLE AS
(
 SELECT '1반' AS 반정보, 90 AS '국어', 80 AS '수학'
 UNION ALL
 SELECT '2반' AS 반정보, 70 AS '국어', 60 AS '수학'
 UNION ALL
 SELECT '3반' AS 반정보, 50 AS '국어', 40 AS '수학'
)

SELECT UNPVT.[반정보], [과목], [점수] FROM UNPIVOT_TABLE
UNPIVOT ([점수] FOR [과목] IN ([국어], [수학])) AS UNPVT

'IT > MSSQL' 카테고리의 다른 글

부서 사용자 트리 쿼리  (0) 2017.11.07
pivot column names change  (0) 2017.03.03
숫자를 한글로 변환 함수  (0) 2017.02.08
부서같은 하이라키 구조의 정보 추출 쿼리  (0) 2017.01.26
MSSQL 캐시 확인 및 삭제  (2) 2016.04.06

+ Recent posts

 

Row를 Column으로 변환 (PIVOT)

SELECT 컬럼명 FROM 테이블명

PIVOT ([집계함수] ([집계 컬럼명]) FOR [대상 컬럼명] IN ([컬럼이 될 값])) AS 피벗테이블명

=> 집계 함수 : SUM(합계), AVG(평균), COUNT(개수), MAX(최대), MIN(최소)

 

예)

DECLARE @SUBJECT VARCHAR(100);
WITH PIVOT_TABLE AS
(
 SELECT '1반' AS 반정보, '국어' AS 과목, 90 AS 점수
 UNION ALL
 SELECT '1반' AS 반정보, '수학' AS 과목, 80 AS 점수
 UNION ALL
 SELECT '2반' AS 반정보, '국어' AS 과목, 70 AS 점수
 UNION ALL
 SELECT '2반' AS 반정보, '수학' AS 과목, 60 AS 점수
 UNION ALL
 SELECT '3반' AS 반정보, '영어' AS 과목, 50 AS 점수
)

SELECT * FROM PIVOT_TABLE
PIVOT (SUM(점수) FOR 과목 IN ([국어], [수학], [영어])) AS PVT

 

 

Column를 Row으로 변환 (UNPIVOT)

SELECT 컬럼명 FROM 테이블명

UNPIVOT ([집계될 데이터의 컬럼명] FOR [UNPIVOT할 데이터의 컬럼명] IN ([UNPIVOT할 컬럼명])) AS 언피벗테이블명

 

예)

WITH UNPIVOT_TABLE AS
(
 SELECT '1반' AS 반정보, 90 AS '국어', 80 AS '수학'
 UNION ALL
 SELECT '2반' AS 반정보, 70 AS '국어', 60 AS '수학'
 UNION ALL
 SELECT '3반' AS 반정보, 50 AS '국어', 40 AS '수학'
)

SELECT UNPVT.[반정보], [과목], [점수] FROM UNPIVOT_TABLE
UNPIVOT ([점수] FOR [과목] IN ([국어], [수학])) AS UNPVT

'IT > MSSQL' 카테고리의 다른 글

부서 사용자 트리 쿼리  (0) 2017.11.07
pivot column names change  (0) 2017.03.03
숫자를 한글로 변환 함수  (0) 2017.02.08
부서같은 하이라키 구조의 정보 추출 쿼리  (0) 2017.01.26
MSSQL 캐시 확인 및 삭제  (2) 2016.04.06

+ Recent posts