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

Obtenez le dernier enregistrement de chaque mois

Vous pouvez utiliser la fonction ROW_NUMBER() ici :

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

C'est juste la date de paiement la plus récente pour chaque mois, si vous le vouliez par LoanID, vous ajouteriez LoanID à la PARTITION BY liste. Si vous souhaitez préserver les liens, vous pouvez utiliser RANK() au lieu de ROW_NUMBER()