SUMIF,分组依据,汇总依据

时间:2019-09-16 17:13:45

标签: sql sql-server

我需要添加一列来显示基于业务范围和季度的收入总额,同时保持原始数据不变。第2步是通过将原始收入行除以收入总和-计算权重来计算收入百分比。

我可以在excel中轻松完成此操作,但无法在SQL中弄清楚。 感谢帮助。

因此,在我的数据中,我有1000行。列是业务范围(作为渠道对MNC),季度(作为Q319和Q419),收入,单位和零件号。

我试图使用group by function对其求和,但是它不起作用。

SELECT 
   FF.Quarter,
   FF.CHANNEL,
   FF.Units,
   FF.Material,
   FF.Revenue,

   SUM (Case When FF.Channel = '02' and FF.Quarter = '2019Q3' then FF.Revenue when FF.Channel = '01' and FF.Quarter = '2019Q3' then FF.Revenue Else 1 End) as Revenue_SUM

   FROM dbo.[Flat File] as FF
   Group by FF.Quarter, FF.Channel, FF.Units, FF.Revenue, FF.Material

期望是创建一列,将每一行的加权百分比计算为%(收入除以收入总和)。

这是侧面的数据表和预期结果。我想编写一个保留原始数据的查询,并在其旁边添加两列。

data table and expected result

1 个答案:

答案 0 :(得分:0)

如果我理解正确,则需要一个窗口功能:

SELECT FF.Quarter, FF.CHANNEL, FF.Units, FF.Material, FF.Revenue,
       SUM(FF.Revenue) OVER (PARTITION BY FF.Channel, FF.Quarter) as Revenue_SUM
FROM dbo.[Flat File] as FF;
相关问题