gpt4 book ai didi

sql - proc sql join 在最接近日期的 SAS 中

转载 作者:行者123 更新时间:2023-12-03 16:36:43 24 4
gpt4 key购买 nike

如何在 SAS 中使用 proc sql 在两个数据集之间进行一对多连接以获得数据集 B 中最接近数据集 A 中的值的记录?

数据集 A

#Patient     #Date of Dose
001 2020-02-01

数据集 B
# Patient        # Lab Test         #Date of Test     # Value 
001 Test 1 2020-01-17 6
001 Test 1 2020-01-29 10

我想进行连接以选择数据集 B 中的第二条记录,该记录的“测试日期”与第一个数据集中的“给药日期”最接近(小于或等于)。

最佳答案

I want to do the join to select the [..] record in Dataset B [...] with a "Date of Test" that is the closest (less than or equal to) to the "Date of Dose" in the first dataset.



您可以使用 outer appy - 如果 sas 支持:
select a.*, b.*
from a
outer apply(
select top 1 b.*
from b
where b.patient = a.patient and b.date_of_test <= a.date_of_dose
order by b.date_of_test desc
) b

另一种解决方案是加入 not exists健康)状况:
select a.*, b.*
from a
left join b
on b.patient = a.patient
and b.date_of_test <= a.date_of_dose
and not exists (
select 1
from b b1
where
b1.patient = a.patient
and b1.date_of_test <= a.date_of_dose
and b1.date_of_test > b.date_of_test
)

关于sql - proc sql join 在最接近日期的 SAS 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60457554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com