【发布时间】:2020-06-17 05:14:51
【问题描述】:
当我准备用于预测医院未出现的数据时,我遇到了以下问题: )。 INDICATION_NO_SHOW 表示患者是否出现在预约中。 0 表示显示,1 表示未显示。
with t1 as
(
select
PAT_ID
,APPT_TIME
,APPT_ID
,ROW_NUMBER () over(PARTITION BY PAT_ID order by pat_id,APPT_TIME) as [TOTAL_APPTS]
,INDICATION_NO_SHOW
from appointments
)
,
t2 as
(
t1.PAT_ID
,t1.APPT_TIME
,INDICATION_NO_SHOW
,sum(INDICATION_NO_SHOW) over(order by PAT_ID, APPT_TIME ) as TOTAL_NO_SHOWS
,TOTAL_APPT
from t1
)
SELECT *
,(TOTAL_APPT- TOTAL_NO_SHOWS) AS TOTAL_SHOWS
FROM T2
order by PAT_ID, APPT_TIME
这导致了以下数据集:
PAT ID APPT_TIME INDICATION_NO_SHOW TOTAL_SHOWS TOTAL_NO_SHOWS TOTAL_APPTS
1 1-1-2001 0 1 0 1
1 1-2-2001 0 2 0 2
1 1-3-2001 1 2 1 3
1 1-4-2001 0 3 1 4
2 1-1-2001 0 0 1 1
2 2-1-2001 0 1 1 2
2 2-2-2001 1 1 2 3
2 2-3-2001 0 2 2 4
如您所见,我的查询仅适用于患者 1,然后它还计算了患者 2 的未出现患者 1 的情况。因此,它单独适用于 1 名患者,但不适用于整个数据集。
TOTAL_APPTs 列成功了,因为它计算了患者在给定 appt 时的 appts 数量。我的问题是:我如何成功地将这些节目和未出现的节目成功加起来(就像我对患者 1 所做的那样)?我完全知道为什么这个查询不起作用,我只是完全不知道如何解决它..
【问题讨论】:
标签: sql tsql subquery window-functions