Sql 根据从第一个表开始的日期连接两个表
我有如下两个表格(日期格式:yyyy-MM-dd): 1) 表1-手术Sql 根据从第一个表开始的日期连接两个表,sql,oracle,Sql,Oracle,我有如下两个表格(日期格式: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_I
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
手术表和就诊表是从其他表合并而来的。我想查找符合以下条件的所有记录:就诊日期>=手术日期
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
您可以使用相关子查询:
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和count,并满足以下条件:
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;
干杯 使用分组和计数可以解决您的问题 请尝试下面的代码
()请向我们显示您的代码并指出您遇到的问题。您的逻辑不清楚,为什么第二个1的访问次数是2?在前一次手术之前不应该考虑访问,请不要将代码作为图像,而是以纯文本形式发布。很抱歉,我很难发布答案,因为StAdvFoad表示在我的答案中有一个无效字符。