sql >> Base de Datos >  >> RDS >> Sqlserver

Obtenga el último registro de cada mes

Podrías usar la función ROW_NUMBER() aquí:

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

Esa es solo la fecha de pago más reciente de cada mes, si lo quisiera por LoanID, agregaría LoanID a la PARTITION BY lista. Si estuviera interesado en preservar los lazos, podría usar RANK() en lugar de ROW_NUMBER()