2017-11-23 2 views
0

ich habe und Ausgabe in meiner Abfrage nicht zurück korrekte Daten, wenn ich einige Werte vergleicheniif auf Tsql return dont erwartetes Ergebnis

select a.item, iif(a.value>b.value,0,1) as compare 
from table a left join table b on a.id=b.id 

Rückkehr

item1, 0 
item2, 0 
item3, 0 

und meine Daten

table a 
item1 10 
item2 20 
item3 30 

table b 
item1 5 
item2 25 
item3 30 

erwartet korrektes Ergebnis war

item1, 0 
item2, 1 
item3, 0 

und wenn ich ISNULL() Funktion Rückkehr

item1, 1 
item2, 1 
item3, 1 

verwenden passiert das gleiche Problem mit CASE WHEN ... THEN 0 ELSE 1 END

Ich weiß wirklich nicht, was mit der Abfrage passiert ist Ich finde nicht, wo das Problem ist, keine Hilfe, vielen Dank im Voraus.

+2

Können Sie Ihre Frage aktualisieren, damit die Tabellen die Daten enthalten, in der Spalte Id? – SEarle1986

+0

Das erwartete Ergebnis ist item1, 0; item2,1; item3, 1 –

+0

Ich benutze nur figurate Beispiel, aber der Fehler hat in meinem beitreten sehr danke –

Antwort

0

Sollte Inner verbinden und mit [für Abstand Tabellennamen oder Spalten]

SELECT 
    a.item, 
    iif(a.value > b.value, 0, 1) AS compare 
FROM [table a] a 
INNER JOIN [table b] b 
    ON a.id = b.id 
+0

Sehr vielen Dank für Hilfe meine Abfrage hat Fehler in der Join –

2

Es sieht aus wie Sie den gleichen Tisch auf sich selbst sind Verbindungs, d.h .:

table a 

Dies bezieht sich auf einen Tisch ‚Tisch‘ genannt, aliased als ‚a‘.

Wenn Sie die gleiche Tabelle auf sich selbst verbinden, wird dies für Ihr Ergebnis von allem, das 1 zurückgibt, verantwortlich sein, da a.value und b.value immer gleich sind, vorausgesetzt, eine Eins-zu-Eins-Übereinstimmung.

Suchen Sie etwas mehr wie:

[table a] a left join [table b] b on a.id = b.id 
+0

Sehr vielen Dank für die Hilfe meine Abfrage hat Fehler in der beitreten –

Verwandte Themen