Das Problem ist mit NULL-Vergleich. Wenn a.field1 oder b.field3 NULL ist, müssen Sie eine IS NULL- oder IS NOT NULL-Anweisung verwenden. Sie könnten einen Standardwert für a.field1 und b.field3 mit der ISNULL-Funktion verwenden.
ISNULL(a.field1,0) <> ISNULL(b.field3,0)
in diesem Fall wird mit dem Wert 0 verglichen.
SELECT IIF(NULL=NULL,'true','false') – Das Ergebnis ist falsch. Erstaunlich!