2016-06-02 12 views
0

Ich habe zwei Ansichten A und B von anderen Ansichten erstellt (kann eine Regel ON UPDATE DO INSTEAD verwenden). A und B haben auch die gleichen drei Spalten text_1, text_2, count. Bis jetzt mein SQL wie folgt aussieht:Wert in Select-Anweisung setzen

select A.text_1, A.text_2, COALESCE(b.count,a.count) as count 
from A 
    left join B on A.text_1 like B.text_1 and A.text_2 like B.text_2; 

Aber ich eine andere Regel brauche über den Wert der Zählung auf 0 alle Datensätze, bei denen text_1 wie text_2 in meinem Ergebnis der select-Anweisung zu setzen.

Ich verwende Ansichten, weil ich gerne die Anweisung "CREATE OR REPLACE ..." verwende.

+0

tun Sie meinen, Sie wollen mehr Werte vereinigen? .. wie 'wählen coalesce (null, null, null, 9, 8) '? .. –

+0

Vielleicht kann eine' CASE'-Anweisung für die Zählung helfen? – Raffael

Antwort

1

using machen es einfacher und die Besetzung von boolean integer vermeidet eine ausführliche case

select 
    text_1, text_2, 
    coalesce(b.count, a.count) * (not text_1 = text_2)::int as count 
from 
    a 
    left join 
    b using (text_1, text_2)