如何合并含CASE语句的SQL查询?需兼容Case_Type_ID=1和2的记录
合并两个SQL查询的解决方案
你可以通过整合CASE语句并调整WHERE条件,把两个查询合并成一个,同时保留两类Case_Type_ID的所有记录,具体实现如下:
整合后的SQL代码
SELECT -- 替换为你实际需要查询的字段(对应原查询中的XXXX/XXX) target_columns, CASE WHEN crr.case_Type_Id = 1 THEN CASE WHEN question3.option_id = 3 THEN 'Symptomatic' WHEN question3.option_id = 4 THEN 'Asymptomatic' ELSE NULL END WHEN crr.case_Type_Id = 2 THEN CASE WHEN question3.option_id = 17 THEN 'Symptomatic' WHEN question3.option_id = 18 THEN 'Asymptomatic' ELSE NULL END ELSE NULL END AS SYMPTOM_STATUS -- 保留两个查询共用的JOIN逻辑 FROM your_join_clauses_here WHERE crr.case_Type_Id IN (1, 2) GROUP BY target_columns, CASE WHEN crr.case_Type_Id = 1 THEN CASE WHEN question3.option_id = 3 THEN 'Symptomatic' WHEN question3.option_id = 4 THEN 'Asymptomatic' ELSE NULL END WHEN crr.case_Type_Id = 2 THEN CASE WHEN question3.option_id = 17 THEN 'Symptomatic' WHEN question3.option_id = 18 THEN 'Asymptomatic' ELSE NULL END ELSE NULL END ORDER BY crr.QUARANTINE_END_DATE DESC
关键改动说明
- WHERE条件:用
IN(1,2)替代原查询的单独条件,一次性筛选出两类Case_Type的记录 - SYMPTOM_STATUS字段:外层CASE判断
case_Type_Id,内层根据不同类型匹配对应的option_id映射规则,统一输出症状状态 - GROUP BY子句:和SELECT中的CASE逻辑完全一致,确保分组依据与查询字段匹配,避免语法错误
内容的提问来源于stack exchange,提问作者Chameleon_Coder
相关产品推荐
相关产品推荐

