多列重复标准

时间:2017-07-17 07:00:40

标签: sql-server

我正在使用SQL Server。这是我的样本数据集:

IDNO| Consigment | SO_Number | Acc Number | OfficeNumber|PL9    |Remarks
--- | -----------| ----------| -----------| ------------|-------|-------
1   | AA12345MY  | 1024450191| 8800400431 |B213         |W449401|Stay
2   | AA12345MY  | 1024450192| 8800400431 |B213         |W449401|Remove
3   | BA12345MY  | 1024460121| 8800400726 |K678         |W229790|Stay
4   | BA12345MY  | 1024460124| 8800400726 |K678         |W229790|Remove

我想在第2行和第4行发表评论,因为它是重复的。

重复标准必须与这4列匹配:

  1. Consigment
  2. Acc Number
  3. OfficeNumber
  4. PL9
  5. 我正在移除最年轻的SO号码(哪一个是最新的)

    我还没有找到如何开始的线索,因为我从未找到完美的参考

    此致

    Fadlisham Fadzil

1 个答案:

答案 0 :(得分:2)

此处创建CTE的一种方法是标记重复记录,然后从该CTE中删除:

WITH cte AS (
    SELECT *,
        ROW_NUMBER() OVER (PARTITION BY Consigment, [Acc Number], OfficeNumber, PL9
                           ORDER BY SO_Number) rn
    FROM yourTable
)

DELETE FROM cte
WHERE rn > 1;