代码之家  ›  专栏  ›  技术社区  ›  Alex browe

透视基础:为什么我的聚合返回空值?

  •  1
  • Alex browe  · 技术社区  · 15 年前

    我这里有一个基本的支点问题,可能不会给你的古鲁带来任何麻烦:

    我有一个很好用的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;
    

    但这会返回一堆空值!:(

    Amount NULL NULL NULL NULL NULL
    

    我做错什么了?感谢您的帮助!

    谢谢!

    1 回复  |  直到 15 年前
        1
  •  3
  •   Alex browe    15 年前

    谢谢巴里。我错误地阅读了有关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;