繁体   English   中英

根据第一个日期连接两个表

[英]Join two tables based on date from first

我有两个如下表(日期格式:yyyy-MM-dd):

1) 表 1 - 手术

P_ID        | SURGERY_DATE
------------------------------------------------
1           | 2012-04-01
2           | 2012-08-14
1           | 2012-07-22
4           | 2012-10-30
3           | 2012-06-07

2) 表 2 - 访问

P_ID        | VISIT_DATE 
-----------------------------------------
1           | 2012-03-28 
1           | 2012-04-14
1           | 2012-05-17
1           | 2012-09-12 
3           | 2012-07-15 
4           | 2012-10-10 
3           | 2012-06-01 

表 SURGERY 和 VISIT 是从其他表连接起来的。 我想查找满足以下条件的所有记录:VISIT_DATE >= SUGERY_DATE

3) 结果表

EMPLOYEE_ID | SUGERY_DATE | NUMBER OF VISIT
-------------------------------------------------------
1           | 2012-04-01 |    4
2           | 2012-08-14 |    0
1           | 2012-07-22 |    2
4           | 2012-10-30 |    1
3           | 2012-06-07 |    1

使用 group by 和 count 可以解决您的问题。

请尝试下面的代码。

( https://i.stack.imgur.com/NFzdf.jpg )

您可以使用相关子查询:

select s.*,
       (select count(*)
        from visit v
        where v.p_id = s.p_id and v.visit_date > s.surgery_date
       ) as num_visits_after
from surgery s;

您需要使用 group by 并按如下所示的条件进行计数:

SELECT
    S.P_ID,
    S.SURGERY_DATE,
    SUM(CASE
        WHEN V.VISIT_DATE > S.SURGERY_DATE THEN 1
    END) AS NUM_VISITS_AFTER
FROM
    SURGERY S
    LEFT JOIN VISIT V ON ( S.P_ID = V.P_ID )
GROUP BY
    S.P_ID,
    S.SURGERY_DATE;

干杯!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM