sql查询减去列

时间:2013-12-10 00:07:18

标签: sql sql-server tsql sql-server-2012

我有一张看起来像这样的表:

  Item  Month    Year    Sales
Name1      1     2013     333
Name2      2     2013     454
Name3      1     2013     434

我需要编写一个如下所示的存储过程:

Item   Sales_On_Month(1)   Sales_On_Month(2)   Sales_On_Month(2)-Sales_On_Month(1)  Sales_On_Month(3) Sales_On_Month(3)-Sales_On_Month(2)
Name1           333                334                              1                        335             1
Name2           454                454                              0                        654             200

我尝试了以下查询: 我在中间看到很多空值。如果你能告诉我对查询或其他方法的修改 这会很棒:

select  (case when [MONTH] = 1 then Sales  END) AS Sales_On_Month(1),
 (case when [MONTH] = 2 then Sales  END) AS Sales_On_Month(2),
 (case when [MONTH] = 2 then Sales  END) - (case when [MONTH] = 1 then Sales  END) AS  Sales_On_Month(2)-Sales_On_Month(1) ...............
from ABC;

1 个答案:

答案 0 :(得分:3)

使用汇总SUM(),MAX(), whatever, and GROUP BY`:

SELECT Item
      ,SUM(CASE WHEN [MONTH] = 1 THEN Sales END) AS Sales_1
      ,SUM(CASE WHEN  [MONTH] = 2 THEN Sales END) AS Sales_2
      ,SUM(CASE WHEN  [MONTH] = 2 THEN Sales END) - SUM(CASE WHEN [MONTH] = 1 THEN Sales END) AS  Sales_On_Month(2)-Sales_On_Month(1)
FROM ABC
GROUP BY Item