【发布时间】:2020-02-07 13:57:43
【问题描述】:
在我有重复记录的地方使用 SUM() OVER(PARTITION BY) 时遇到问题。我可以使用 DISTINCT 删除重复项,但 SUM 仍对所有重复记录执行。
例如我的数据是:
--------------------------------------
|ref |CODES |VALUE |SUM |
--------------------------------------
|101 |CODE1 |20 |150 |
|101 |CODE2 |30 |150 |
|101 |CODE1 |20 |150 |
|101 |CODE2 |30 |150 |
|101 |CODE1 |20 |150 |
|101 |CODE2 |30 |150 |
应用 DISTINCT 后,它变为:
--------------------------------------
|ref |CODES |VALUE |SUM |
--------------------------------------
|101 |CODE1 |20 |150 |
|101 |CODE2 |30 |150 |
所以问题是我希望 SUM 列是 50。
SUM 码是:
SUM(value) OVER (PARTITION BY ref) AS Total
我想看看:
--------------------------------------
|ref |CODES |VALUE |SUM |
--------------------------------------
|101 |CODE1 |20 |50 |
|101 |CODE2 |30 |50 |
感谢任何建议。谢谢。
【问题讨论】:
-
请向我们展示您期望的结果。您希望结果集中有 2 条记录,还是 6 条?
-
为防止误解,您是否使用 Microsoft sql server 作为 DMBS?请添加您的 rdmbs 的适当标签。
-
首先删除表中的重复项而不是在使用该表的每个查询中进行补偿不是更有意义吗?
标签: sql sql-server sum duplicates window-functions