#sql-server #datediff
#sql-server #datediff
Вопрос:
Вопрос
Укажите имя, фамилию, пол и количество дней с момента последнего приема каждого пациента и 23/09/2019. Код, написанный для вопроса, не совсем правильный (я не хочу, чтобы несколько записей для одного пациента). Пожалуйста, подскажите мне правильный код для вопроса.
Источник кода: Microsoft SQL server
Код
Go
Use MedicalPractice
Select Patient.FirstName as Patient_FName, Patient.LastName as Patient_LName,
Patient.Gender as Patient_Gender,
Datediff(day, Appointment.AppDate, '2019-09-23') as
DaysBetween_LAppointmentAnd20190923
From dbo.Patient, dbo.Appointment
Where Appointment.Patient_Ref = Patient.Patient_ID
Go
Входные данные назначения
AppDate Patient_Ref
2019-09-17 10000
2019-09-17 10001
2019-09-18 10000
2019-09-18 10002
Входные данные пациента
Patient_ID Имя фамилия Пол
10000 Люк Смит мужчина
10001 Джесс Фокс женщина
10002 Лили Бэй женщина
Комментарии:
1. Эволюционировать — никто не должен использовать объединения в старом стиле через предложение where
Ответ №1:
Попробуйте это:
Select Patient.FirstName as Patient_FName, Patient.LastName as Patient_LName,
Patient.Gender as Patient_Gender,
Datediff(day, Appointment.AppDate, '2019-09-23') as
DaysBetween_LAppointmentAnd20190923
From dbo.Patient,
INNER JOIN (SELECT Appointment.Patient_Ref,MAX(Appointment.AppDate) OVER (PARTITION BY
Appointment.Patient_Ref ORDER BY Appointment.Patient_Ref) AS AppDateFROM
dbo.Appointment) Appointment ON Appointment.Patient_Ref = Patient.Patient_ID
Go