SSMS中如何编写T-SQL筛选无Form D的唯一就诊记录
实现目标
在SSMS中编写T-SQL,筛选未登记Form D的唯一Encounter(就诊)记录:
- Encounter字段来源于
Table 1 - Document/Forms字段来源于
Table 2 - 需覆盖两类无
Form D的场景:就诊无任何关联表单记录、就诊关联了表单但无Form D条目 - 期望输出就诊编号:1002、1004、1005、1007、1008、1009
原代码问题
你原有查询存在语法和逻辑两处错误:
- JOIN语法错误:未正确指定关联的第二张表,关联条件的表字段顺序写反
- 逻辑缺失:未增加「排除存在Form D记录的就诊」的判断,无法返回目标结果
可直接运行的正确代码
推荐使用NOT EXISTS写法,语义清晰且大表场景下性能更优:
SELECT DISTINCT T1.Encounter FROM Table_One T1 WHERE NOT EXISTS ( SELECT 1 FROM Table_Two T2 -- 替换为你环境中实际存储Forms/表单的表名 WHERE T2.encounter_ID = T1.encounter_ID AND T2.Forms = 'Form D' ) ORDER BY T1.Encounter
如果习惯JOIN写法,可使用左连接判空的版本:
SELECT T1.Encounter FROM Table_One T1 LEFT JOIN Table_Two T2 ON T1.encounter_ID = T2.encounter_ID AND T2.Forms = 'Form D' WHERE T2.encounter_ID IS NULL GROUP BY T1.Encounter ORDER BY T1.Encounter
注意事项
- 不要将
T2.Forms = 'Form D'条件写在WHERE子句中,否则会过滤掉完全没有关联表单的就诊记录,导致结果缺失 - 上述两种写法都会自动去重,不会返回重复的就诊编号
参考数据示例

内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

