【发布时间】:2021-03-19 15:33:26
【问题描述】:
我有一个关于使用 oracle 进行数据库查询的相当不寻常的问题。
我被问到是否有可能获得患者在 48 / 72 小时内从他们出院的同一站恢复的病例数。
考虑以下示例:
| Case | Station | From | To |
|---|---|---|---|
| 1 | Stat_1 | 2020-01-03 20:10:00 | 2020-01-04 17:40:00 |
| 1 | Stat_2 | 2020-01-04 17:40:00 | 2020-01-05 09:35:00 |
| 1 | Stat_1 | 2020-01-05 09:35:00 | 2020-01-10 12:33:00 |
在这个例子中,我必须检查他在 1 号站再次登记时的最后一次出院时间与第一次入院时间之间的差异。这应该算作一次重新入院。
我用LAG 和LEAD 尝试了一些东西,但你不能在WHERE-Clause 中使用它们,所以我猜这不太有用。
LAG (o.OEBENEID, 1, 0) OVER (ORDER BY vfs.GUELTIG_BIS) AS Prev_Stat,
LEAD (o.OEBENEID, 1, 0) OVER (ORDER BY vfs.GUELTIG_BIS) AS Next_Stat,
LAG (vfs.GUELTIG_BIS, 1) OVER (ORDER BY vfs.GUELTIG_BIS) AS End_Prev_Stat,
LEAD (vfs.GUELTIG_AB, 1) OVER (ORDER BY vfs.GUELTIG_AB) AS Begin_Next_Stat
我能够获得旧值,但我无法计算这两个日期之间的差异。
这甚至有可能实现吗?我真的不知道如何使用 SQL 来完成。
提前致谢!
【问题讨论】:
标签: sql oracle datetime subquery where-clause