2010-11-16 72 views
1

我有一個基本的樞軸的問題在這裏,可能不會給你任何大師麻煩:PIVOT基礎知識:爲什麼我的聚合返回NULL?

Ive得到這個SQL是工作的罰款:

SELECT order_year, SUM(amount) AS Amount 
FROM dbo.mytable 
GROUP BY order_year; 

這將返回sonething,如:

2010 7000000 
2007 8051222 
2008 7099057 
2009 13088790 

現在我想用,因爲這MSDN,文章中描述的相同原理來轉動表:http://msdn.microsoft.com/en-us/library/ms177410.aspx

我試過這個:

SELECT 'Amount' AS Total_Amount_Sorted_By_Order_Year, 
[0], [1], [2], [3], [4] 
FROM 
(SELECT order_year, amount 
    FROM dbo.mytable) AS SourceTable 
PIVOT 
(
SUM(amount) 
FOR order_year IN ([0], [1], [2], [3], [4]) 
) AS PivotTable; 

但是這返回一堆NULL! :(

Amount NULL NULL NULL NULL NULL 

什麼我做錯了嗎?任何幫助表示讚賞!

謝謝!

+3

您不應該使用實際年份值[2010],[2009]而不是[0],[1]等嗎? – codingbadger 2010-11-16 14:51:26

回答

3

謝謝巴里。我誤解MSDN上的文檔,並認爲[0],[1]等標籤,其中樞軸列的枚舉...(!)

與取得的實際年更換他們聚集的工作!

SELECT 'Amount' AS Total_Amount_Sorted_By_Order_Year, 
[2007], [2008], [2009], [2010] 
FROM 
(SELECT order_year, amount 
    FROM dbo.mytable) AS SourceTable 
PIVOT 
( 
SUM(amount) 
FOR order_year IN ([2007], [2008], [2009], [2010]) 
) AS PivotTable; 
+0

我必須通過5個不同的例子來嘗試這個,所有這些都使用[0],[1]等等......我認爲這是一個序數! – jleach 2016-09-25 08:23:48