问题描述
我需要做声明
SELECT data from result_orders
仅当 order_state 为NULL时。
否则我需要再做一次选择陈述。
我尝试此操作,但收到错误消息:
ERROR: Syntax error at or near "SELECT"
LINE 15: WHEN order_state IS NULL THEN SELECT data from result_order...
SELECT
CASE data
WHEN order_state IS NULL THEN SELECT data from result_orders
ELSE select data from result_orders
END
FROM result_orders
解决方法
您可以在此处使用联合,例如:
WITH cte AS (
SELECT data
FROM result_orders
WHERE order_state IS NULL
)
SELECT * FROM cte
UNION ALL
SELECT ... FROM result_orders WHERE (SELECT COUNT(*) FROM cte) = 0;
如果联合中的第一个查询确实有记录,则第二个查询将不返回任何内容。如果第一个查询没有记录,那么如果该查询匹配任何内容,则第二个查询将返回记录。
,线
WHEN order_state IS NULL THEN SELECT data from result_order
语法错误,应该是这样
SELECT ISNULL(order_state,result_order)
这意味着当order_state为null时返回result_order