2014-01-11 2 views
0

나는이 열 SQL 서버의 테이블이 있습니다쿼리 비교하는 2 년 판매

  • 년도
  • 제품
  • 수량

예 :

Year Month Product Qty 
2011 1  XYZQW  45 

그래서이 테이블에는 모든 제품 판매가 저장되었습니다.

나는 일년 비교하는 쿼리를 작성해야하고 이전이 보고서 구축 :

Year GEN FEB MAR APR MAY GIU JUL AUG SEP OCT NOV DEC 
------------------------------------------------------- 
2011 12 23 56 54 14 11 15 18 89 87 48 98 
2012 19 21 55 50 24 10 19 17 88 81 45 90 

임시 테이블을 생성하지 않고 할 수있는 방법이 있습니다를?

+1

이 pivot' '라고합니다. 여기에 대해 자세히 알아보십시오 (http://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx). –

답변

0

이 간단,이 시도 :

WITH DT(AMonth,AYear,AQty) 
    AS (SELECT Month, Year, Qty 
     FROM YourTable) 
SELECT pvt.* 
FROM  DT cte 
     PIVOT 
     (SUM(AQty) 
      FOR AYear IN ([2011],[2012],[2013],[2014])) AS pvt 
1

이 시도 :

SELECT [Year] = z.[Year], 
     [Gen] = ISNULL(z.[1], 0), 
     [Feb] = ISNULL(z.[2], 0), 
     [Mar] = ISNULL(z.[3], 0), 
     ... 
     [Dec] = ISNULL(z.[12],0) 
FROM (SELECT x.[Year], x.[Month], x.Qty FROM dbo.MyTable x WHERE x.[Year] IN (2011, 2012)) y 
PIVOT (SUM(y.qty) FOR y.[Month] IN ([1], [2], [3], ..., [12])) z 
관련 문제