SQL Pivot表,其中包含跨年度结果的数据

时间:2014-11-17 11:57:24

标签: sql sql-server pivot

我正在尝试使用一个简单的数据透视表来分析多年来的营业额与费用。我的源数据表很简单,如下所示:

GroupName|Total|Year|

Income   |1000 |2012|    
Income   |1200 |2013|    
Income   |1500 |2014|    
Expenses |750  |2012|    
Expenses |800  |2013|    
Expenses |950  |2014|

我希望将其转向:

GroupName|2012|2013|2014|

Income   |1000|1200|1500|
Expenses |750 |800 |950 |

非常简单我想如果你知道怎么做,但我仍然试图理解SQL中的枢轴。

2 个答案:

答案 0 :(得分:0)

使用PIVOT

SELECT GroupName, [2012], [2013], [2014]
FROM
(SELECT *
FROM MyTable) AS SourceTable
PIVOT
( 
   AVG(Total)
   FOR Year IN ([2012], [2013], [2014])
) AS PivotTable   

你得到了所需的输出:

GroupName   2012    2013    2014
---------------------------------
Expenses    750     800     950
Income      1000    1200    1500

答案 1 :(得分:0)

这可能有用:

SELECT GroupName,
       [2012],
       [2013],
       [2014]
FROM   Tabl
       PIVOT ( Max(Total)
             FOR Yr IN ([2012],
                        [2013],
                        [2014]) ) AS PivotTable 

注意:如果有两个或多个行具有相同的GroupNameYr,那么它将选择其中最大的总数,并将其显示在输出中。

sql fiddle