病人的Oracle sql查询
Posted
技术标签:
【中文标题】病人的Oracle sql查询【英文标题】:Oracle sql query for patients 【发布时间】:2020-09-28 08:37:29 【问题描述】:我有下表。
W_TRANSFER_TXN
In It 给出了 dt 内的病房和 dt 外的病房。 WRT_IN_DT 和 WRT_OUT_DT。
我需要找出特定 WRT_FROM_WARD_CD 病房代码在特定日期的患者人数。 应该是这样的:
一个唯一的 WRT_IP_NUM 是一个唯一的患者。我如何编写查询来做到这一点
【问题讨论】:
您的意思是标记oracle-sqldeveloper吗?您的屏幕截图显示 plsqldeveloper,尽管问题与这两种工具都无关。 【参考方案1】:如果我正确地遵循了你,你可以将列取消旋转到行,然后使用窗口总和:
select wrt_from_ward_cd, wrt_dt,
sum(val) over(partition by wrt_from_ward_cd order by wrt_dt) no_patients
from (
select wrt_from_ward_cd, wrt_in_dt wrt_dt, 1 val from w_transfer_txn
union all
select wrt_from_ward_cd, wrt_out_dt, -1 val from w_transfer_txn
) t
这将为您提供每个时间点的实际患者人数。如果要在给定的日期范围内进行过滤,则需要嵌套上述查询:
select *
from (
select wrt_from_ward_cd, wrt_dt,
sum(val) over(partition by wrt_from_ward_cd order by wrt_dt) no_patients
from (
select wrt_from_ward_cd, wrt_in_dt wrt_dt, 1 val from w_transfer_txn
union all
select wrt_from_ward_cd, wrt_out_dt, -1 val from w_transfer_txn
) t
) t
where wrt_dt between date '2020-09-20' and date '2020-09-24'
【讨论】:
以上是关于病人的Oracle sql查询的主要内容,如果未能解决你的问题,请参考以下文章