2016-04-06 5 views
2

Ich habe eine Abfrage, wo ich Bedingung setzen muss, wenn die case-Anweisung wahr ist. Ich habe versucht, aber nicht den richtigen Wert geeting.Hinzufügen von Bedingung, wenn die case-Anweisung in postgresql ist

SELECT 
    name,count(CASE WHEN date_part('year',time_stamp) = 2016 THEN answ_count end) AS Year15 
FROM 
     companies companies 
where 

    (CASE when no_answer='f' then value_s IS not NULL or value_n IS not NULL end) 
+0

, dass ein Fall Ausdruck ist, ist kein Fall Aussage ... – jarlh

Antwort

2
SELECT name, 
     count(CASE WHEN date_part('year',time_stamp) = 2016 THEN answ_count end) AS Year15 
FROM 
     companies companies 
where 
    CASE when no_answer='f' then value_s ELSE '1' end IS not NULL 
    OR CASE when no_answer='f' then value_n ELSE '1' end IS not NULL 

CASE ein Ausdruck ist, können Sie nur einen Wert nach dem THEN Teil angeben, keine Bedingung wie Sie THEN value_s IS NOT NULL

+0

Danke für Ihre Antwort, aber ich bin immer noch gleich wie zuvor ... – SUDARSHAN

+0

Was erwarten Sie zu bekommen? – sagi

+0

Und auch dieser Fehler FEHLER: CASE-Typen Integer und Text kann nicht gefunden werden LINE 27: ... und (CASE wenn no_answer = 'f' dann dp_valu ... – SUDARSHAN

0

nicht wahr Fall so verwenden können.

Es ist schwer, herauszufinden, was Sie zu tun versuchen, aber das Ergebnis des Falles zu prüfen, anstatt den Test im Inneren des Gehäuses setzen, wie folgt aus:

... 
where CASE when no_answer='f' then value_s else value_n end 
    IS not NULL 
+0

Bedingung, die ich hinzufügen möchte, ist wie wenn no_answer = 'f' dann sollte es überprüfen, ob value_s oder value_n nicht null ist elase sollte es nicht überprüfen für diesen Zustand – SUDARSHAN

Verwandte Themen