Problemet är med NULL-jämförelse. Om a.field1 eller b.field3 är NULL måste du använda en IS NULL eller IS NOT NULL-sats. Du kan använda ett standardvärde för a.field1 och b.field3 med ISNULL-funktionen.
ISNULL(a.field1,0) <> ISNULL(b.field3,0)
i detta fall finns det en jämförelse med värdet 0.
SELECT IIF(NULL=NULL,'true','false') -- Resultatet är falskt. Fantastiskt!