ANSI SQL a le IS [NOT] DISTINCT FROM
construction qui n'a pas encore été implémentée dans SQL Server (Demande de connexion
).
Il est possible de simuler cette fonctionnalité
dans SQL Server en utilisant EXCEPT
/INTERSECT
toutefois. Les deux traitent NULL
comme égaux dans les comparaisons. Vous souhaitez rechercher des lignes où les colonnes de clé sont identiques mais les colonnes de valeur sont différentes. Donc ça devrait le faire.
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)