给定数据
我需要通过包括SalesNew
列来解决这个问题:SalesNew
列将根据条件根据每个商品的组号计算总和。
基于上表的示例。当项目的组号为1时,它将仅复制或保留其销售。如果不为1,则SalesNew列应获取每个组中所有项目的总和,就像在给定的示例中一样,salesNew为项目3和项目4显示20,因为它添加了两个都为10的销售额。因此,项目3和4 salesNew值是20。
我知道求和函数,但这不会显示所需的输出。我希望任何人都可以帮助我。
提前致谢
最佳答案
您可以结合使用SUM(Sales) OVER(PARTITION BY [Group])
和CASE
:
SELECT *,
salesNew =
CASE
WHEN [Group] = 1 THEN Sales
ELSE SUM(Sales) OVER(PARTITION BY [Group])
END
FROM Data
SQL Fiddle
您也可以使用
CROSS APPLY
:SELECT
d.*,
salesNew =
CASE
WHEN [Group] = 1 THEN Sales
ELSE x.salesNew
END
FROM Data d
CROSS APPLY(
SELECT salesNew = SUM(Sales)
FROM Data
WHERE [Group] = d.[Group]
)x
SQL Fiddle