SQL Server WHERE子句改写:实现特定患者的筛选与排除需求
SQL Server 两类会员数据查询实现
基础查询语法修正说明
原有基础查询存在两处语法问题,改写时已统一修复:
- SELECT 子句末尾冗余逗号已删除
- 因查询返回
patient_id字段,GROUP BY 子句需同步添加该字段,否则SQL Server会触发聚合校验报错
第一类查询需求实现
要求:提取指定6个level_of_care_cd的全部患者,level_of_care_cd = '100.007'时排除provider_id = '119282'的条目
改写后完整SQL:
SELECT patient_id, provider_id, level_of_care_cd FROM db_members WHERE level_of_care_cd IN ('100.001', '100.004', '100.007', '100.022', '100.034', '100.037') AND (level_of_care_cd <> '100.007' OR provider_id <> '119282') GROUP BY patient_id, level_of_care_cd, provider_id
WHERE子句核心逻辑:非100.007的LOC编码不受provider_id限制,100.007编码仅保留provider_id不等于119282的条目
第二类查询需求实现
要求:提取指定6个level_of_care_cd的全部患者,level_of_care_cd = '100.007'时仅保留provider_id = '119282'的条目
改写后完整SQL:
SELECT patient_id, provider_id, level_of_care_cd FROM db_members WHERE level_of_care_cd IN ('100.001', '100.004', '100.007', '100.022', '100.034', '100.037') AND (level_of_care_cd <> '100.007' OR provider_id = '119282') GROUP BY patient_id, level_of_care_cd, provider_id
WHERE子句核心逻辑:非100.007的LOC编码不受provider_id限制,100.007编码仅保留provider_id等于119282的条目
内容的提问来源于stack exchange,提问作者Ron Levine
相关产品推荐
相关产品推荐

