2011-02-08 4 views
1
OrderId OrderCode Description 
------------------------------- 
1  Z123  Stuff 
2  ABC999  Things 
3  Z123  Stuff 

위와 같은 표에 복제본이 있습니다. Orders가 중복 된 보고서와 중복 된 Order에 대한 보고서를 얻으 려하므로 데이터베이스에 어떻게 들어 갔는지 파악할 수 있습니다.표에서 중복 행 '세부 정보'찾기

그래서 이상적인 출력을 얻고 싶습니다.

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

SQL에서 코드를 작성하는 방법을 알아낼 수 없습니다.

답변

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 
+0

감사합니다, 나는 그런 식으로 그것을 볼 때 간단합니다, 나는 그것에 대해 모든 잘못된 방법을 생각했다. – fearofawhackplanet