试图让一行显示“是”或“否”,这取决于找到的值(如果树在参数给定的日期之前已被处理,则请说“是”或“否”)。
这是我的功能:
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;
$$我得到了以下错误:
ERROR: syntax error at or near "EXISTS"
LINE 8: IF EXISTS (SELECT * FROM treatment如何在SELECT中实现IF语句?
PS:使用postgresql 9.4
发布于 2016-04-01 23:47:53
IF是控制流。使用CASE,因为这是在SELECT语句中:
SELECT tree.name,
tree.type,
(CASE WHEN EXISTS (SELECT 1
FROM treatment
WHERE tree.name = treatment.tree_name AND
treatment.date < care_date
) THEN
THEN 'YES'::text
ELSE 'NO'::text
END) as Flag
FROM tree;我还猜测您打算使用一个相关的子查询,而不是独立的子查询。
https://stackoverflow.com/questions/36367364
复制相似问题