t sql:在第二个表中查找行-最新日期-在当前表中的日期之前

nwlqm0z1  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(276)

我为一组联邦和州资助的健康诊所[社区健康中心]工作。
每次患者就诊时,都会记录患者在就诊日期的当前医疗保险。
当病人有了孩子,他们出生在一家医院,而这家医院在分娩之日不给我们寄病人的健康保险。
我有一个数据集[分娩],上面有一个病人名单,以及他们在过去三年里生孩子的日期。
我有一个单独的数据集[就诊],其中包括“分娩”数据集中所有患者的所有就诊[在我们的一个诊所]。此数据集包含每次就诊时每位患者的医疗保险。
预期产量:

Patient, Delivery Date, Most Recent Visit, Health Insurance

对于每个病人,我需要在婴儿出生前最后一次(最近一次)到我们的诊所就诊时添加保险。
我希望我已经充分解释了。
谢谢你的帮助!
例子:
交付:

Patient        Delivery Date
----------------------------
A              2017-02-22
A              2018-04-16
A              2019-07-12

访问次数:

Patient        Visit Date        Insurance
------------------------------------------        
A              2017-01-10        X
A              2017-01-23        Y
A              2018-01-12        W 
A              2018-03-22        P
A              2019-04-16        R
A              2019-06-12        S

预期产量:

Patient        Delivery Date      Most Recent Visit        Insurance
-----------------------------------------------------------------------    
A              2017-02-22         2017-01-23                Y
A              2018-04-16         2018-03-22                P
A              2019-07-12         2019-06-12                S
brqmpdu1

brqmpdu11#

我建议横向连接:

selet d.*, v.visit_date most_recent_visit, v.insurance
from deliveries d
outer apply (
    select top (1) v.*
    from visits v
    where v.patient = d.patient and v.visit_date < d.delivery_date
    order by v.visit_date desc
) d

相关问题