ANSI SQL ha il IS [NOT] DISTINCT FROM
costrutto che non è stato ancora implementato in SQL Server (Richiesta di connessione
).
È possibile simula questa funzionalità
in SQL Server utilizzando EXCEPT
/INTERSECT
però. Entrambi trattano NULL
uguale nei confronti. Vuoi trovare righe in cui le colonne chiave sono le stesse ma le colonne dei valori sono diverse. Quindi questo dovrebbe farlo.
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)