1

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

我可以在 excel 中轻松地做到这一点,但无法在 SQL 中弄清楚。感谢帮助。

所以,在我的数据中,我有 1000 行。列是业务线(如渠道与跨国公司)、季度(如 Q319 和 Q419)、收入、单位和部件号。

我尝试使用 group by 函数对其进行求和,但它不起作用。

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

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

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

数据表和预期结果

4

1 回答 1

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;
于 2019-09-16T17:19:37.737 回答