【发布时间】:2023-01-22 02:53:06
【问题描述】:
我有一个包含列的表“机器", "产品“ 和 ”来源”。
| Machine | Product | Source |
|---|---|---|
| M3 | H | cmdd6 |
| M3 | H | 91 |
| M3 | H | cmdd3 |
| M4 | I | cmdd7 |
| M4 | J | cmdd7 |
| M4 | B | 827 |
| M4 | B | cmdd7 |
在上表中,Machine 是 M3,产品相同,但 Sources 列有多个摄入量。因此,要求是删除重复的行,其中 Sources 应始终按升序排列为“cmdd”。
例如,如果产品重复并且来源不同,即“cmdd6”或“cmdd3”,则应删除重复行,并且值将保留在来源“cmdd3”中。
下面是想要实现的结果表
| Machine | Product | Sources |
|---|---|---|
| M3 | H | cmdd3 |
| M4 | I | cmdd7 |
| M4 | J | cmdd7 |
| M4 | B | cmdd7 |
下面是我试图删除计数值> 1 的重复项的查询。
WITH CTE(Machine, Product,Sources, duplicatecount) AS (
SELECT Machine, Product, Sources,
ROW_NUMBER() OVER(PARTITION BY Machine, Product
ORDER BY Machine, Sources) AS DuplicateCount
FROM Concatcleanup
)
delete from cte
where duplicatecount > 1
非常感谢任何帮助。
【问题讨论】:
标签: sql sql-server window-functions sql-delete