특정 필드를 기반으로 중복으로 간주되는 행을 포함하는 데이터 세트가 있습니다. 중복 행을 일치시키고, 일치하지 않는 필드를 평가하고, 삭제를 위해 그 중 하나를 플래그 지정해야합니다. 샘플 테이블은 다음과 같습니다일치하는 행의 기준에 따라 삭제/업데이트 행 식별
ID Col1 Col2 Col3
1 A B CC
2 A B DD
3 E F GG
4 E F HH
은 그래서 궁극적으로 삭제 행 1 또는 2 중 하나를 신고의 열 3 필드를 행 COL1과 Col2의 일치에 따른 중복으로 1 & 2를 식별하고 비교해야합니다. 행 3에 대해서도 동일합니다. & 4.이 테이블은 Col1과 Col2에서 적어도 하나의 다른 행과 일치하는 행으로 구성됩니다.
내 첫번째 생각은이 형식으로 행을 평평하게 자체에 가입했다 :
t1.ID t2.ID t1.Col1 t1.Col2 TableOneCol3 TableTwoCol3
1 2 A B CC DD
3 4 E F GG HH
는 그 다음 각 행에 대해 TableOneCol3 및 TableTwoCol3을 평가하는 간단한 것입니다. 내가 자기와 함께이 작업을 수행하려고 가입 :
select t1.ID, t2.ID, t1.Col1, t1.Col2, t1.Col3 as TableOneCol3, t2.col3 as TableTwoCol3
into #temptable
from tableOne t1
join tableTwo t2
where t1.Col1 = t2.Col2
and t1.Col2 = t2.Col2
and t1.ID <> t2.ID
그러나 이것은 중복을 제거하지 않습니다 물론
은 - 단지 각 행에 중복 된 필드 정보를 추가합니다.필자는 데이터를 피벗 팅하는 경로를 따라 갔지만 유사한 결과를 얻었습니다. 중복 된 것도 피벗합니다.
나는 SO를 통해 파고 들지만, 내가해야 할 일에 대한 구체적인 단어가 있는지 확실하지 않습니다. (분명히 모호한 제목은 공짜 일 수 있습니다. 사과하십시오.) 데이터를 단일 열과 피벗으로 병합하는 많은 예제가 있지만 쌍을 이루는 행을 병합하고 결과 집합에서 해당 행 중 하나를 제거하는 것은 없습니다.
잘못된 길로 잘못 가고 있는지 확실하지 않습니다. 이전에 평가 된 것의 맥락에서 각 행을 평가할 필요가있는 것 같습니다. 그러나 커서를 사용하지 않고이 작업을 수행하는 방법을 잘 모르겠습니다.
어떻게 "결국 1 또는 2 행의 deletio에 대해 플래그를 지정 하시겠습니까?"- 조건없이 프로그래밍 방식으로는 수행 할 수 없게됩니다. – dbmitch
삭제 된 행을 평가하는 비즈니스 로직이 있는데, 이는 해당 질문과 관련이 없습니다. 이것은 내가 작업하고있는 데이터의 매우 단순한 예입니다. – pbrown