You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SQL查找未匹配指定诊断码的特定药物医保索赔记录

解决方案:查找使用Drug-X但无H99诊断码的医保索赔

核心逻辑

要实现需求,需要两步筛选:

  • 先定位所有使用过Drug-X的索赔记录
  • 从这些索赔中排除任何服务行关联了H99诊断码的索赔

推荐SQL写法

方法1:使用NOT EXISTS(高效且逻辑清晰)

假设你的数据分为两张表:

  • claim_services:存储索赔服务行,包含ClaimID(索赔ID)、DrugCode(药品编码)
  • claim_diagnoses:存储索赔关联的诊断码,包含ClaimID、ICD10Code(ICD10诊断码)
SELECT DISTINCT cs.ClaimID
FROM claim_services cs
WHERE cs.DrugCode = 'Drug-X'
AND NOT EXISTS (
    -- 检查当前索赔是否存在H99诊断码
    SELECT 1
    FROM claim_diagnoses cd
    WHERE cd.ClaimID = cs.ClaimID
    AND cd.ICD10Code = 'H99'
);

方法2:使用LEFT JOIN + IS NULL

如果更习惯JOIN写法,可以用左连接筛选无匹配的记录:

SELECT DISTINCT cs.ClaimID
FROM claim_services cs
LEFT JOIN claim_diagnoses cd
    ON cs.ClaimID = cd.ClaimID
    AND cd.ICD10Code = 'H99'
WHERE cs.DrugCode = 'Drug-X'
AND cd.ClaimID IS NULL;

你之前失败的可能原因

  • 错误地将诊断码条件与药品条件放在同一行筛选:比如直接在claim_services中筛选DrugCode='Drug-X' AND ICD10Code!='H99',但诊断码是关联到整个索赔而非单个服务行,这种写法会漏掉索赔内其他服务行有H99的情况。
  • 使用WHERE IN时逻辑反转:比如错误地查询了有H99的索赔ID并尝试排除,但子查询的关联条件写错,导致筛选逻辑失效。

验证示例

对于Claim ID为321的记录:只要它的服务行中存在Drug-X,且claim_diagnoses中没有该ClaimID对应的H99记录,上述两个SQL都会返回321,符合需求。

内容的提问来源于stack exchange,提问作者sqlrobert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 14:10:06