2017-12-15 2 views
0

Gesamtzahl der Datensätze in der Tabelle I1450:SQL NICHT IN Funktion Rückkehr nicht erwartetes Ergebnis

enter image description here

Gesamtzahl mit Zustand, in den i.BROJ gleich REFERENCA in anderer Tabelle Feld:

enter image description here

Sollte es nicht die Differenz zwischen den letzten beiden Ergebnissen (die 64 ist) zurückgeben, wenn ich NOT IN in WHERE Klausel verwende?

enter image description here

Beide Säulen sind von varchar Typ.

+0

Alle REFERENCA Nullwerte? – jarlh

Antwort

1

Wenn Sie irgendwelche NULL Werte in den REFERENCA Spalt aus der FpsPmtOrderRQ Tabelle dann die NOT IN Klausel wird nicht funktionieren wie erwartet - (the reason why)

Eine Lösung ist NULL Werte aus dem Ergebnis entfernen zurück durch der Subselect.

+0

Werden die Datensätze in der ersten Tabelle in 'BROJ' gezählt, wo der Wert' NULL' ist? – nikname

1

Wenn die Unterabfrage einen Nullwert zurückgibt, ist IN nicht wahr. Tun Sie stattdessen NOT EXISTS.

select count(*) 
from i1450 i 
where not exists (select 1 from FpsPmtOrderRQ f 
        where i.broj = f.REFERENCA) 
1

Ich denke, Sie müssen Ihr Feld zu Nullen zusammenfassen. Das ist wahrscheinlich, warum Sie 0. bekommen Dadurch:

where coalesce(I.BROJ,'n/a') not in (select coalesce(REFERENCA,'') 

oder etwas ähnliches, würden Sie nulls ausschließen, und eine richtige Zählung zurück.

+0

Es ist besser, die Nullzeilen einfach zu überspringen. (Wie Radus Antwort.) – jarlh

Verwandte Themen