2017-02-08 5 views
0

Ich versuche eine Abfrage auszuführen, die zwei gleiche Spalten mit unterschiedlichen Bedingungen/Kriterien auswählt. Ich bin in der Lage, diese Abfrage unabhängig auszuführen und ein Ergebnis zu erhalten, aber wenn ich versuche, sie zusammen auszuführen (wie im zweiten Teil gezeigt), erhalte ich einen Fehler. Die erwartete Tabelle wird unten als save_line1, save_line2 angezeigt. Aber die Ausgabe, die ich bekomme, ist die erste Zeile - für alle Zeilen.Mehrere Spalten für verschiedene Kriterien auswählen - SQL

Ich möchte wissen, welche Änderungen an meiner zweiten Abfrage vorgenommen werden müssen, damit es funktioniert. Vielen Dank.

select save_line from save_output_table 
where execution_id in ('292') 
and seq_id = '0' 
and save_type='R' 
order by line_id ASC 

+------------+ 
| Save_line | 
+------------+ 
|   17 | 
|   22 | 
|   23 | 
+------------+ 



SELECT 
(select save_line 
from save_output_table 
where execution_id in ('292') 
and seq_id = '0' 
and save_type='R' 
order by line_id ASC 
) as save_line1, 
(select save_line 
    from save_output_table 
where execution_id in ('286') 
and seq_id = '0' 
and save_type='R' 
order by line_id ASC 
) as save_line2 
from save_output_table 

+-------------+------------+ 
| Save_line 1 | Save_line2 | 
+-------------+------------+ 
|   17 |   9 | 
|   22 |   5 | 
|   23 |   3 | 
+-------------+------------+ 
+0

Subqueries in der äußeren SELECTs Spaltenliste sollte 0 oder 1 Zeilen zurückgeben, sonst wird ein Fehler auftreten könnte. Sind Sie sicher, dass Sie in Ihren beiden Unterselektionen kein "AND saveline = s.saveline" verpassen? Damit dies funktioniert, benötigen Sie auch ein "s" am Ende Ihrer Anfrage. Und warum die Bestellung von? –

Antwort

1

testen

SELECT stragg(distinct(save_line1.save_line)), stragg(distinct(save_line2.save_line)) 
from 
(select save_line 
from save_output_table 
where execution_id in ('292') 
and seq_id = '0' 
and save_type='R' 
order by line_id ASC 
) as save_line1, 
(select save_line 
    from save_output_table 
where execution_id in ('286') 
and seq_id = '0' 
and save_type='R' 
order by line_id ASC 
) as save_line2 
+0

Ich möchte keine Null oder einen Fall bekommen. Ich brauche zwei unabhängige Ergebnisse als zwei Spalten mit den genannten Kriterien –

+0

es gibt mir falsche Ergebnisse. –

+0

Sind die Ergebnisse in der falschen Reihenfolge? – user1854438

Verwandte Themen