1
OrderId  OrderCode  Description
-------------------------------
1        Z123       Stuff
2        ABC999     Things
3        Z123       Stuff

上記のようなテーブルに重複があります。どの注文が重複しているか、どの注文が重複しているかについてのレポートを取得しようとしています。

理想的には、次のような出力を得たいと思います。

OrderId    IsDuplicatedBy
-------------------------
1          3
3          1

これをSQLでコーディングする方法がわかりません。

4

1 に答える 1

2

1つのクエリで同じテーブルを2回使用し、チェックする必要のあるフィールドを結合できます。T1.OrderID <> T2.OrderID同じ行の重複を見つけないために必要です。

declare @T table (OrderID int, OrderCode varchar(10), Description varchar(50))
insert into @T values
(1, 'Z123', 'Stuff'),
(2, 'ABC999', 'Things'),
(3, 'Z123', 'Stuff')

select
  T1.OrderID,
  T2.OrderID as IsDuplicatedBy
from @T as T1
  inner join @T as T2
    on T1.OrderCode = T2.OrderCode and
       T1.Description = T2.Description and
       T1.OrderID <> T2.OrderID

結果:

OrderID IsDuplicatedBy
1   3
3   1
于 2011-02-08T10:43:44.327 に答える