Проблемът е с сравнението NULL. Ако a.field1 или b.field3 е NULL, трябва да използвате израз IS NULL или IS NOT NULL. Можете да използвате стойност по подразбиране за a.field1 и b.field3 с функцията ISNULL.
ISNULL(a.field1,0) <> ISNULL(b.field3,0)
в този случай има сравнение със стойността 0.
SELECT IIF(NULL=NULL,'true','false') -- Резултатът е false. Невероятно!