SQL Server 테이블 회전

이 문서에서는 SQL Server 테이블을 회전하는 방법을 설명합니다.

원래 제품 버전: SQL Server
원본 KB 번호: 175574

요약

이 문서에서는 SQL Server 테이블을 회전하는 방법을 설명합니다. 라는 QTRSALES테이블이 있다고 가정해 보겠습니다. 테이블에는 다음 형식의 데이터가 있는 , QUARTERAMOUNTYEAR이 있습니다.

참고

1996년 4분기의 행은 없습니다.

년도 분기 금액
1995 1 125,000.90
1995 2 136,000.75
1995 3 212,000.34
1995 4 328,000.82
1996 3 728,000.35
1996 2 422,000.13
1996 1 328,000.82

이제 다음 형식으로 데이터를 볼 수 있도록 테이블을 회전하려고 합니다.

Q1 2분기 3분기 4분기
1995 125,000.90 136,000.75 212,000.34 328,000.82
1996 328,000.82 422,000.13 728,000.35 0.00

테이블을 회전하는 데 사용할 쿼리는 이 문서의 다음 섹션에 있습니다.

테이블을 회전하는 샘플 쿼리

테이블을 회전하는 데 사용할 쿼리는 다음과 같습니다.

SELECT YEAR,
Q1= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 1 AND YEAR =
Q.YEAR),0),
Q2= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 2 AND YEAR =
Q.YEAR),0),
Q3= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 3 AND YEAR =
Q.YEAR),0),
Q4= ISNULL((SELECT AMOUNT FROM QTRSALES WHERE QUARTER = 4 AND YEAR =
Q.YEAR),0)
FROM QTRSALES Q
GROUP BY YEAR

큰 테이블 쿼리

큰 테이블의 경우 이 쿼리는 더 빠릅니다.

SELECT YEAR,
SUM(CASE quarter WHEN 1 THEN amount ELSE 0 END) AS Q1,
SUM(CASE quarter WHEN 2 THEN amount ELSE 0 END) AS Q2,
SUM(CASE quarter WHEN 3 THEN amount ELSE 0 END) AS Q3,
SUM(CASE quarter WHEN 4 THEN amount ELSE 0 END) AS Q4
FROM qtrsales q
GROUP BY YEAR

참조

FROM - PIVOT 및 UNPIVOT 사용