可以在两个“选择”语句之间进行选择

问题描述

我需要做声明

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