Вопрос Datediff (количество дней с момента последнего приема каждого пациента и 23/09/2019)

#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