首页 > 解决方案 > 使用 CASE 语句根据标题表中的值过滤详细信息表

问题描述

根据标题表中的值,我想选择一组不同的明细表。如果表头的状态为2或更大,则应选择状态为2或更大的明细。请注意,de 值并不总是相等的。

示例简化语句

SELECT * FROM DETAIL d
INNER JOIN HEADER h on h.key=d.key

WHERE CASE WHEN h.status < 2 THEN d.status <2 ELSE d.status >=2 END

标签: sqlswitch-statement

解决方案


您可以使用简单的语句选择与标题状态相对应的详细信息行OR

SELECT * FROM DETAIL d
INNER JOIN HEADER h on h.key=d.key

WHERE ( (h.status >=2 AND d.status >=2) OR (h.status <2 AND d.status <2) )

因为您只为标题表选择一个值,所以两个子句中只有一个为 True 并选择那些明细行。


推荐阅读