Zde můžete použít funkci ROW_NUMBER():
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
To je jen poslední datum platby za každý měsíc, pokud byste to chtěli pomocí LoanID, přidali byste LoanID do PARTITION BY
seznam. Pokud byste měli zájem o zachování vazeb, můžete použít RANK()
místo ROW_NUMBER()