【发布时间】:2020-04-08 21:44:36
【问题描述】:
所以我有一张我想加入的桌子,但我并没有得到我需要的一切。所以我有一张看起来像这样的桌子。我想看看是否有办法将这个表连接到自身以获得其余部分,所以我看到当我看到代码“0013”时,我应该得到一个代码“0013”代码类型“9_prcdr”和med_code_ID 74717。我尝试将其加入到自身中,但我要么没有获得足够的行数,要么没有获得太多行数。我在网上看过,我看到有一个我可以尝试的功能是领先或滞后,但我没有太多经验。你能帮忙吗?谢谢!
patient_id claim_id from_dt prcdr_cd code code_type med_code_ID
123 961 2004-02-14 0013 0013 9_prcdr 74717
456 214 2004-02-21 0013 NULL NULL NULL
789 961 2004-01-16 0013 0013 9_prcdr 74717
1001 212 2004-09-24 0013 NULL NULL NULL
10002 291 2004-10-02 0013 NULL NULL NULL
这就是它应该的样子。
patient_id claim_id from_dt prcdr_cd code code_type med_code_ID
123 961 2004-02-14 0013 0013 9_prcdr 74717
456 214 2004-02-21 0013 0013 9_prcdr 74717
789 961 2004-01-16 0013 0013 9_prcdr 74717
1001 212 2004-09-24 0013 0013 9_prcdr 74717
10002 291 2004-10-02 0013 0013 9_prcdr 74717
我的尝试是这样的:
select *
from t1
INNER JOIN t1 t2 ON t1.code = t2.prcdr_cd
AND t1.patient_id = t2.patient_id
AND t1.claim_id = t2.claim_id
AND t1.from_dt = t2.from_dt
【问题讨论】:
-
它仍然不清楚(对我来说)你想做什么?如果你
select *来自一个自身连接的表,你将得到重复的每一列,一次来自from,一次来自join- 你没有显示这个。您填写缺失信息的标准也不清楚,您的加入尝试基于唯一的patient_id加入,因此如果code为空,则它将保持为空。因此,例如,您需要阐明patient_id456 应该如何获取缺失值,即根据什么逻辑从哪一行获取。 -
同一代码有多个值时会发生什么?选择最大值,最小值,任何?
标签: sql sql-server tsql join