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

如何获取TABLEA中与TABLEB同行CPT编码匹配的记录?

解决TABLEA与TABLEB同行CPT组合的筛选问题

嘿,我来帮你搞定这个SQL需求!你要从TABLEA里筛选出那些和TABLEB同一行的CPTCode对应的记录——也就是TABLEA中属于同一个ClaimID的两个CPTCode正好是TABLEB某一行的cpt1和CPT2的组合,然后把这两个记录都取出来,对吧?

思路拆解

核心是要确认:TABLEA里的某个CPTCode,在同一个ClaimID下存在它在TABLEB里的“配对CPT”(也就是TABLEB同一行的另一个CPT)。我们可以通过两种方式实现:

方法一:配对关联法

先把TABLEB的每一行拆成双向的CPT配对,再和TABLEA关联,同时验证同一个ClaimID下存在配对CPT:

SELECT a.ClaimID, a.CPTCode
FROM TABLEA a
JOIN (
    -- 将TABLEB的每行拆成双向配对,覆盖两种顺序的匹配
    SELECT cpt1 AS CPTCode, cpt2 AS PairCPT FROM TABLEB
    UNION ALL
    SELECT cpt2 AS CPTCode, cpt1 AS PairCPT FROM TABLEB
) b ON a.CPTCode = b.CPTCode
-- 确保当前ClaimID下存在对应的配对CPT
WHERE EXISTS (
    SELECT 1 
    FROM TABLEA a2
    WHERE a2.ClaimID = a.ClaimID
      AND a2.CPTCode = b.PairCPT
);

方法二:自连接匹配法

通过TABLEA自连接,找到同一个ClaimID下的CPT组合,再和TABLEB匹配:

SELECT a.ClaimID, a.CPTCode
FROM TABLEA a
WHERE (a.ClaimID, a.CPTCode) IN (
    SELECT a1.ClaimID, a1.CPTCode
    FROM TABLEA a1
    JOIN TABLEA a2 ON a1.ClaimID = a2.ClaimID
    JOIN TABLEB b ON (a1.CPTCode = b.cpt1 AND a2.CPTCode = b.CPT2)
       OR (a1.CPTCode = b.CPT2 AND a2.CPTCode = b.cpt1)
);

结果验证

用你给出的示例数据测试,两种方法都会返回预期结果:

ClaimId  CPTCode
60       62000
60       0213T

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:13:21