我有一个数据集,其中包含基于特定字段的被视为重复的行。我需要匹配重复的行,评估不匹配的字段,并将其中的一个标记为删除。的试样台是:根据匹配行的条件识别删除/更新的行
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