Oracle数据库中,有一个就诊信息表(包含人员编号、开始时间、结束时间),如何筛选表中人员是否存在前一次结束时间后又在72小时内有新的开始时间的数据
时间: 2024-10-14 17:16:55 浏览: 38
Oracle数据表分区的策略.pdf
在Oracle数据库中,你可以使用SQL查询来筛选出那些存在上述条件的数据。假设表名为`treatment_info`,字段名分别为`patient_id`, `start_time`, `end_time`,可以编写如下的查询:
```sql
SELECT patient_id
FROM treatment_info
WHERE DATEDIFF('day', end_time, start_time) BETWEEN 0 AND 3 -- 区间包含0天,即72小时
AND NOT EXISTS (
SELECT 1
FROM treatment_info ti2
WHERE ti2.patient_id = t1.patient_id
AND ti2.end_time > t1.end_time
AND DATEDIFF('day', ti2.end_time, t1.start_time) >= 1 -- 考虑到72小时的时间差
)
```
这个查询首先找出在结束时间和新开始时间之间恰好在72小时内(含72小时)的记录,然后排除那些在这段时间内还有其他更晚结束时间的患者。结果就是满足条件的人员列表。
阅读全文