Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Ich brauche eine SQL-Abfrage, um nach Namen zu gruppieren, aber andere Felder basierend auf dem neuesten Eintrag zurückzugeben

Sie können das, was Andrey geschrieben hat, auch etwas kompakter schreiben, wenn Sie TOP (1) WITH TIES auswählen und den Ausdruck ROW_NUMBER() in die ORDER BY-Klausel einfügen:

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
)

(Übrigens gibt es keinen Grund, LIKE für einen einfachen Zeichenkettenvergleich zu verwenden.)