ANSI SQL tem o
IS [NOT] DISTINCT FROM
construção que ainda não foi implementada no SQL Server (Solicitação de conexão
). É possível simular esta funcionalidade no SQL Server usando
EXCEPT
/INTERSECT
Contudo. Ambos tratam NULL
igual nas comparações. Você deseja encontrar linhas em que as colunas-chave sejam as mesmas, mas as colunas de valor sejam diferentes. Então isso deve fazê-lo. SELECT *
FROM SourceTable S
JOIN DestinationTable D
ON S.Key1 = D.Key1
/*Join the key columns on equality*/
AND NOT EXISTS (SELECT S.Key2,
S.Key3
EXCEPT
SELECT D.Key2,
D.Key3)
/*and the value columns on unequality*/
AND NOT EXISTS (SELECT S.Value1,
S.Value2
INTERSECT
SELECT D.Value1,
D.Value2)