2016-08-01 6 views
1

Ich versuche eine Abfrage zu erstellen, bei der das Ergebnis je nach Größe der ersten Tabelle aus zwei verschiedenen Tabellen stammen kann. Ist etwas Vergleichbares überhaupt möglich?Verwenden von CASE in PostgreSQL zum Auswählen verschiedener FROMs

SELECT 
    CASE WHEN COUNT(table1.column1) > 5 
    THEN 
     column1, 
     column2, 
     column3 
     FROM table1 
    ELSE 
     column1, 
     column2, 
     column3 
     FROM table2 
    END 

Mit diesem Code habe ich so etwas wie dieses:

ERROR: syntax error at or near "," 
LINE 4: column1, 
+0

Haben Sie versucht, in einer einfachen Konsole ausgewählten Spalten setzen? SELECT CASE WHEN COUNT (var1)> 5 DANN (column1, column2, column3 FROM table1) ELSE (column1, column2, column3 VON table2) END'. Ich habe es nicht versucht, es ist eine wilde Vermutung. – Santhucool

+0

@Santhucool mit Klammern die Fehlermeldung geringfügig unterscheidet, aber es funktioniert immer noch nicht: 'FEHLER: Syntaxfehler bei oder in der Nähe von" FROM " LINE 4: FROM table1)' – Qvery

+0

Was ist 'var1'? Ist es eine Tabellenspalte? Wenn ja, von welcher Tabelle? –

Antwort

4
with c (c) as (select count(c1) from t) 
select c1, c2, c3 
from t 
where (select c from c) > 5 
union all 
select c1, c2, c3 
from r 
where (select c from c) <= 5 

Die entsprechenden Spalten des gleichen Typs sein müssen. Oder auf den gleichen Typ gegossen werden.

WITH clause

UNION clause

Verwandte Themen