【发布时间】:2021-09-12 03:26:09
【问题描述】:
我有一张名为Table1 的表格,见下文
PRODUCT CUSTOMER COMP
DICE DAVES PET SHOP Billed
DICE CLAXTONS ToT
CARDS VIEWSONIC NITS
CARDS NORTHERN LIGHTS Billed
CARDS NORTHERN LIGHTS NITS
BOX TABLEAU Billed
BOX TABLEAU ToT
有些值在 CUSTOMER 字段中有重复项,但如果重复,它将始终在至少一个 COMP 部分中包含 Billed,因此我希望生成的查询仅返回 COMP 中的值,其中重复项为 Billed,因此结果表看起来像
PRODUCT CUSTOMER COMP
DICE DAVES PET SHOP Billed
DICE CLAXTONS ToT
CARDS VIEWSONIC NITS
CARDS NORTHERN LIGHTS Billed
BOX TABLEAU Billed
这是我尝试过的 SQL
SELECT *
FROM Table1
WHERE COMP = 'Billed'
UNION ALL
SELECT Table1_A.PRODUCT, Table1_A.CUSTOMER, Table1_A.COMP
FROM Table1 Table1_A
LEFT JOIN (
SELECT *
FROM Table1
WHERE COMP != 'Billed'
) Table1_B ON Table1_B.PRODUCT = Table1_A.PRODUCT
AND Table1_B.CUSTOMER = Table1_A.CUSTOMER
我想如果我输入一个UNION 并引用两个等于Billed 而不等于Billed,那么它将保持我正在寻找的格式,但它只是重复每个CUSTOMER每一个COMP
【问题讨论】:
-
对不起,我添加了我试过的SQL,只是我输入值时出现拼写错误,我已经修复了一个“NORTHERN LIGHTS”
-
这能回答你的问题吗? How to delete duplicate rows in SQL Server?
-
不,我实际上看到确实也尝试过,但这似乎只适用于整行的每一列都相同的情况,对于我的问题,每个重复行的两列是相同的,第三个是不同的,这是我要删除的依赖值
-
只需更改查询以适合您的用例 - 它的原理完全相同。
row_number方法是我建议的方式。 -
我不想从原始表中删除它,尽管我只想要一个查询来显示我上面的结果表
标签: sql sql-server database tsql