возвращение одной строки с максимальной датой из двух разных столбцов из двух разных таблиц - PullRequest
0 голосов
/ 30 апреля 2018

Использование построителя отчетов 3.0 для sql server 08 R2. Пытаюсь получить самые последние даты из 2 разных столбцов в 2 разных таблицах, но я получаю 4 строки вместо 1. На рисунке ниже должна быть одна строка на пациента.

Сценарий, который я использую, это:

SELECT "Patient"."PatientID", "PatientLastName", "PatientFirstName", "DischargeDate", "PatVisitPayable"."ContactDate"
FROM "BTI"."Patient" 
JOIN "BTI"."PatAdmissions" ON "Patient"."PatientID" = "PatAdmissions"."PatientID" 
JOIN "BTI"."PatVisitPayable" ON "PatAdmissions"."PatientID" = "PatVisitPayable"."PatientID" 
JOIN "BTI"."PatAdmissionDivision" ON "PatAdmissions"."AdmissionID" = "PatAdmissionDivision"."AdmissionID"
GROUP BY "Patient"."PatientID", "PatientLastName", "PatientFirstName", "DischargeDate", "ContactDate"

Я пытался поместить max (contactdate) и max (dischargedate) в оператор select, но все равно получаю 4 строки. Не был уверен, что это то, что я должен включить в первоначальный запрос, или что-то, что я смогу добавить в отчет позже.

4 ряда на одного пациента

1 Ответ

0 голосов
/ 30 апреля 2018

Попробуйте удалить ContactDate из предложения GROUP BY и использовать функцию max() в SELECT:

SELECT pt.PatientID, 
       pt.PatientLastName, pt.PatientFirstName, pt.DischargeDate,                          
       MAX(ContactDate) as ContactDate
FROM BTI.Patient pt
JOIN BTI.PatAdmissions pa ON pt.PatientID = pa.PatientID
JOIN BTI.PatVisitPayable py ON pa.PatientID = py.PatientID 
JOIN BTI.PatAdmissionDivision pd ON pa.AdmissionID = pd.AdmissionID
GROUP BY pt.PatientID, pt.PatientLastName, 
         pt.PatientFirstName, pt.DischargeDate;

Всегда определяйте таблицу alise , за которой легко следить / читать и писать. Это предполагает ContactDate в резонансном формате.

...