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

Holen Sie sich den letzten Datensatz von jedem Monat

Sie könnten hier die Funktion ROW_NUMBER() verwenden:

SELECT *
FROM (SELECT lp.ID, lp.LoanID, lp.PaymentDate
          , ROW_NUMBER() OVER (PARTITION BY YEAR(PaymentDate), Month(PaymentDate) ORDER BY PaymentDate DESC) 'RowRank'
      FROM LoanPayments lp 
     )sub
WHERE RowRank = 1

Das ist nur das neueste PaymentDate für jeden Monat. Wenn Sie es nach LoanID haben möchten, fügen Sie LoanID zu PARTITION BY hinzu aufführen. Wenn Sie daran interessiert sind, Bindungen zu erhalten, können Sie RANK() verwenden statt ROW_NUMBER()