DJ메탈짱™의 Free Style

[MS-SQL] Pivot, MS-SQL 2005 이상 본문

일(job)/DBMS

[MS-SQL] Pivot, MS-SQL 2005 이상

뽀&쏭 2016. 1. 15. 14:03



WITH summary AS (

SELECT

     캠페인번호,

          YEAR(캠페인시작일) AS YYYY,

          cast(MONTH(캠페인시작일) as varchar) AS MM

FROM 캠페인정보

     WHERE YEAR(캠페인시작일) LIKE LEFT(@캠페인시작일,4)+'%'

)

SELECT

YYYY AS 년도

     , [01] AS '01', [02] AS '02', [03] AS '03', [04] AS '04'

     , [05] AS '05', [06] AS '06', [07] AS '07', [08] AS '08'

     , [09] AS '09', [10] AS '10', [11] AS '11', [12] AS '12'

FROM summary

PIVOT(

COUNT(캠페인번호) FOR MM IN([01],[02],[03],[04],[05],[06],[07],[08],[09],[10],[11],[12])

) PVT

UNION 쿼리 열심히 만들어서 마지막에 감싸서 SUM하던 노가다를 확실하게 줄여주는 SQL2005 이상 버전부터 나온 PIVOT에 대해 작성해봤습니다.

위의 PIVOT 기능 사용하기 위해서는 SQL2000에서는 지원이 안되다보니
데이터베이스의 호환성 수준을 SQL2005 이상으로 설정해주셔야 합니다.

SQL2008의 경우 데이터베이스 속성 > 옵션 > 호환성 수준 SQL Server 2008(100) 으로 설정해주시면 됩니다.