Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Ho bisogno di una query sql per raggruppare per nome ma restituire altri campi in base alla voce più recente

Puoi anche scrivere ciò che Andrey ha scritto in modo un po' più compatto se selezioni TOP (1) WITH TIES e inserisci l'espressione ROW_NUMBER() nella clausola ORDER BY:

SELECT TOP (1) WITH TIES
  CallerFName,
  CallerLName,
  CallerDOB,
  CreatedOn,
  PhoneNoteID
FROM [dbo].[PhoneCallNotes]
WHERE CallerLName = 'Public' 
ORDER BY ROW_NUMBER() OVER(
  PARTITION BY CallerFName, CallerLName, CallerDOB
  ORDER BY CreatedOn DESC
)

(A proposito, non c'è motivo di usare LIKE per un semplice confronto di stringhe.)