sql - 使用 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
解决方案
您可以使用简单的语句选择与标题状态相对应的详细信息行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 并选择那些明细行。
推荐阅读
- python - 使用 AWS BAtch 执行 Python 脚本
- sidekiq - Padrino 与会话如何验证 Sidekiq
- sql - 从存储过程中选择特定列
- javascript - 在jQuery中连接字符串
- reactjs - 如何将动作创建者(使用调度)传递给 store.dispatch?
- python - 如何在字典中交换值(基于函数参数)
- javascript - 从浏览器窗口以编程方式给出的视觉通知
- train-test-split - 发现样本数量不一致的输入变量: [26707, 5] ,但我的样本数据范围相同
- machine-learning - Adam Optimizer 不更新值
- r - R:从 Lexicon 中的推文中查找单词,计算它们并将数字保存在带有推文的数据框中