Необходимо отобразить количество дней, прошедших с тех пациентов, которые были госпитализированы в специализированное учреждение по уходу за больными, выписаны в свои дома (с уходом или без него) и были помещены в больницу или отделение неотложной помощи.
Меня попросили показать количество дней, прошедших с тех пациентов, которые были помещены в лечебное учреждение для умений, выписаны в свои дома (с уходом или без него) и были помещены в больницу или отделение неотложной помощи.Метрика предназначена для оценки эффективности способности квалифицированных медицинских учреждений не допустить повторного госпитализации пациентов в больницы или наблюдения в отделении неотложной помощи после ухода из медицинского учреждения.
У меня есть намного больший запрос, который отлично работает, используя FOLLOWING и PRECEDING, который дает мне предыдущую возможность и следующую допущенную возможность, но это не помогает с проблемой выше.Я знаю необходимость еще одного подзапроса, но тот, который я только что выделил, самый последний и самый ранний.Мне нужно, чтобы он катался и искал первый экземпляр, который соответствует условию.Меня попросили либо указать дни, либо указать дату последнего приема.
select nursing.*, hospital.*
from
(Select--nursing stays only
SUMMARY.MEMBER_ID
, SUMMARY.POS
, SUMMARY.ADMIT_DATE
, SUMMARY.DISCHARGE_DATE
, SUMMARY.Discharge_To
FROM PRD.SUMMARY
INNER JOIN
(Select
SUMMARY.MEMBER_ID, MAX(DISCHARGE_DATE) MX_DISCHARGE_DATE
FROM PRD.SUMMARY
WHERE
SUMMARY.DISCHARGE_DATE BETWEEN '2017-01-01' AND '2018-12-31'
And SUMMARY.POS = 'Nursing'
group by SUMMARY.MEMBER_ID) sq
ON sq.MEMBER_ID = SUMMARY.MEMBER_ID and sq.MX_DISCHARGE_DATE = SUMMARY.DISCHARGE_DATE
WHERE
SUMMARY.DISCHARGE_DATE BETWEEN '2017-01-01' AND '2018-12-31'
And SUMMARY.POS = 'Nursing') nursing
INNER JOIN
( --hospital stays only
Select
SUMMARY.MEMBER_ID
, SUMMARY.POS
, SUMMARY.ADMIT_DATE
, SUMMARY.DISCHARGE_DATE
, SUMMARY.Discharge_To
FROM PRD.SUMMARY
INNER JOIN (
select MEMBER_ID, MIN(ADMIT_DATE) MIN_ADMIT_DATE
FROM PRD.SUMMARY
WHERE
SUMMARY.DISCHARGE_DATE BETWEEN '2017-01-01' AND '2018-12-31' And SUMMARY.POS = 'Hospital'
GROUP BY SUMMARY.MEMBER_ID) sq
on sq.MEMBER_ID = SUMMARY.MEMBER_ID and sq.MIN_ADMIT_DATE = SUMMARY.ADMIT_DATE
WHERE
SUMMARY.DISCHARGE_DATE BETWEEN '2017-01-01' AND '2018-12-31' And SUMMARY.POS = 'Hospital')
hospital on nursing.MEMBER_ID = hospital.MEMBER_ID and nursing.DISCHARGE_DATE >= hospital.ADMIT_DATE
DDL для создания вышеприведенной таблицы
CREATE TABLE [dbo].[jpsSUMMARY](
[member_id] [int] NULL,
[pos] [nvarchar](10) NULL,
[admit_date] [date] NULL,
[discharge_date] [date] NULL,
[discharge_to] [nvarchar](50) NULL
)
GO
CSV-данные, соответствующие ожидаемому результату
member_id,pos,admit_date,discharge_date,discharge_to
1001,Nursing ,2016-03-08,2016-03-14,Home Without Care
1001,Hospital ,2016-03-21,2016-03-24,Home Without Care
1001,ER ,2016-03-27,2016-03-28,Hospital
1001,Nursing ,2016-08-19,2016-09-02,Home Without Care
1001,ER ,2016-09-05,2016-09-06,Home Without Care
Вот ожидаемый результат