2011-09-03 5 views
1

연도를 그 아래 열 및 판매 수량으로 표시하려고합니다.피벗 쿼리가 작동하지 않습니다.

이 쿼리는 OrderYear 다음 소계 보여줍니다

Select YEAR(OrderDate) As OrderYear, SUM(SubTotal) as OrderTotal 
    From Sales.SalesOrderHeader s 
     Group by YEAR(OrderDate)  

그래서 나는 그것을 위해 피벗 쿼리를 작성했다. 이것은 작동하지 않는 피벗 쿼리입니다.

Select [2001] , [2002], [2003], [2004] 
From 
(
    Select YEAR(OrderDate) As OrderYear, SUM(SubTotal) as OrderTotal 
    From Sales.SalesOrderHeader s 
     Group by YEAR(OrderDate)  
) a 
Pivot(
    OrderTotal FOR OrderYear In ([2001] , [2002], [2003], [2004]) 
) pvt 

아무도 실수를 발견 할 수 있습니까? AdventureWorks 예제 데이터베이스를 사용하고 있습니다.

답변

1

집계가 누락되었습니다. 당신은 단지

MAX(OrderTotal) FOR OrderYear In ([2001] , [2002], [2003], [2004]) 

실제로 귀하의 경우 당신이 돈에 비록 (이 경우 중 하나 MAX 또는 MIN 할 것) 지금까지 집계 된 하나의 값이있을 것으로 예상 경우에도

는 여전히 문법에 필요한 내부 집계가 필요없고 사용할 수 있습니다

Select [2001] , [2002], [2003], [2004] 
From 
(
    Select YEAR(OrderDate) As OrderYear, SubTotal 
    From Sales.SalesOrderHeader s 
) a 
Pivot(
    SUM(SubTotal) FOR OrderYear In ([2001] , [2002], [2003], [2004]) 
) pvt 
+0

Martin : 감사합니다! – TCM

관련 문제