Мне нужно объединить данные из двух отчетов о деятельности больницы. Вот что происходит: пациенты поступают в отдел позвоночника. Некоторые из которых затем получают ссылку на вентиляцию. Через некоторое время пациент выписан. Позже, тот же самый пациент может или не может быть повторно направлен назад в отдел позвоночника и может или не может быть повторно направлен для вентиляции. Мне отправляют данные о деятельности в двух отчетах:
Ежемесячный отчет о деятельности:
[MRN] [NHS Number] [Admission Date] [DoB] [Blah] [Blah]
Отчет о вентиляции
[MRN] [Admission Date] [Ventilation Days] [Ventilation Type] [blah] [blah]
N.B. Дата поступления в отчете о вентиляции - это дата, когда они направляются на вентиляцию. Это может быть тот же день или некоторая дата после того, как они были переданы в отдел позвоночника.
Что мне нужно сделать, так это: присоединить каждый ряд к самому непосредственному входу до направления пациента на вентиляцию. Мне нужно избегать дублирования строк, но я не могу присоединить его к самой последней строке в Ежемесячном отчете об активности, поскольку это может быть последующим переходом, а другая информация неприменима.
Получив ответ на аналогичный вопрос о Stackoverflow, я получил следующий код:
SELECT [Year], [Month], MRN, [NHS Number], [Admission Date] AS [VD
Admission Date],
[Admit date] AS [MAR Admit Date], Days,
[Ventilation Type], [Ventilation Route], [Ventilation Time], [Package of
care class],
[Para/Tetra/No deficit], [Social charge date commenced ] AS [Social charge
date], [Discharge date]
FROM Spinal_Costing.Vented_Days VD
LEFT JOIN (SELECT *, ROW_NUMBER() OVER(PARTITION BY [Patient MRN] ORDER BY
[Admit Date] DESC) AS row
FROM Spinal_Costing.MAR
) MAR ON VD.MRN = MAR.[Patient MRN]
WHERE MAR.row = 1;
Но это возвращает самую последнюю запись в MAR для каждого пациента.