Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL select max(date) et la valeur correspondante

Vous pouvez utiliser une sous-requête. La sous-requête obtiendra le Max(CompletedDate) . Vous reprenez ensuite cette valeur et rejoignez à nouveau votre table pour récupérer la note associée à cette date :

select ET1.TrainingID,
  ET1.CompletedDate,
  ET1.Notes
from HR_EmployeeTrainings ET1
inner join
(
  select Max(CompletedDate) CompletedDate, TrainingID
  from HR_EmployeeTrainings
  --where AvantiRecID IS NULL OR AvantiRecID = @avantiRecID
  group by TrainingID
) ET2
  on ET1.TrainingID = ET2.TrainingID
  and ET1.CompletedDate = ET2.CompletedDate
where ET1.AvantiRecID IS NULL OR ET1.AvantiRecID = @avantiRecID