Prova något som:
where (X.Name <> 'xxx' or X.Name is null)
and (XY.Product <> 1 or XY.Product is null)
Sedan, per definition NULL
är ett okänt värde (lite förenklat men OK för denna förklaring), kommer det varken lika med eller inte lika med ett givet värde - det är därför IS NULL
krävs här.