如何获取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
相关产品推荐
相关产品推荐

