Основы PIVOT: почему мой агрегат возвращает NULL? - PullRequest
1 голос
/ 16 ноября 2010

У меня есть базовый PIVOT-вопрос, который, вероятно, не вызовет у вас гуру проблем:

У меня есть этот SQL, который работает нормально:

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

Это возвращаетзвучит как:

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

Что я делаю не так? Любая помощь приветствуется!

Спасибо!

1 Ответ

3 голосов
/ 16 ноября 2010

Спасибо, Барри. Я неправильно прочитал документацию по 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; 
...