Der Versuch, eine Zeile zu haben, die je nach den gefundenen Werten 'YES' oder 'NO' anzeigt (wenn ein Baum vor dem im Argument angegebenen Datum behandelt wurde, JA, sonst NEIN).SQL - SELECT mit innerer IF oder CASE
Hier ist meine Funktion:
CREATE OR REPLACE FUNCTION tree_care(care_date DATE)
RETURNS TABLE(name VARCHAR(32), type VARCHAR(32), treated TEXT) AS
$$
BEGIN
RETURN QUERY
SELECT tree.name,
tree.type,
IF EXISTS (SELECT * FROM treatment
JOIN tree ON tree.name = treatment.tree_name
WHERE treatment.date < care_date) THEN
'YES'::text
ELSE
'NO'::text
END IF
FROM tree;
END;
$$
Und bekomme ich folgende Fehlermeldung:
ERROR: syntax error at or near "EXISTS"
LINE 8: IF EXISTS (SELECT * FROM treatment
Wie implementieren man eine IF-Anweisung in einer SELECT?
PS: Mit postgresql 9,4
Ich denke, Sie brauchen ein Semikolon nach dem END IF, um die IF EXISTS bedingte Logik zu schließen, die Sie haben. – Dresden