O problema é com a comparação NULL. Se a.field1 ou b.field3 for NULL, você precisará usar uma instrução IS NULL ou IS NOT NULL. Você pode usar um valor padrão para a.field1 e b.field3 com a função ISNULL.
ISNULL(a.field1,0) <> ISNULL(b.field3,0)
neste caso há uma comparação com o valor 0.
SELECT IIF(NULL=NULL,'true','false') -- O resultado é falso. Incrível!