首页 > 解决方案 > SQL - 当结果在 2 个字段上重复时,删除所有

问题描述

当我运行这个查询

SELECT

    DT.CONTRACT_NUMBER,
    DT.ROLE,
    DT.TAX_ID,
    DT.EFFECTIVE_DATE

FROM DATA_TABLE DT

我得到这个结果。

结果

我想删除每个合同的 TAX ID 出现多次的结果。

即这个结果会消失。如果他们有 3 个结果,他们就会消失。

标签: sql

解决方案


我认为窗口函数可能是要走的路:

SELECT DT.CONTRACT_NUMBER, DT.ROLE, DT.TAX_ID, DT.EFFECTIVE_DATE
FROM (SELECT DT.CONTRACT_NUMBER, DT.ROLE, DT.TAX_ID, DT.EFFECTIVE_DATE,
             COUNT(*) OVER (PARTITION BY TAX_ID) as cnt
      FROM DATA_TABLE DT
      WHERE DT.CONTRACT_NUMBER = '551000280'
     ) DT
WHERE CNT = 1;

如果您确实想为每个税号保留一行,请使用row_number()而不是count(*).


推荐阅读