我有一個數據集,其中包含基於特定字段的被視爲重複的行。我需要匹配重複的行,評估不匹配的字段,並將其中的一個標記爲刪除。的試樣臺是:根據匹配行的條件識別刪除/更新的行
ID Col1 Col2 Col3
1 A B CC
2 A B DD
3 E F GG
4 E F HH
所以我需要確定行1 & 2基於col1和col2上匹配重複,並比較COL3字段,最終標記無論是行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行進行刪除」 - 沒有標準,你將無法以編程方式執行 – dbmitch
有業務邏輯來評估哪一行被刪除,這與問題無關。這是我正在處理的數據的一個非常簡單的例子。 – pbrown