Anda dapat menggunakan fungsi ROW_NUMBER() di sini:
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
Itu hanya Tanggal Pembayaran terbaru untuk setiap bulan, jika Anda menginginkannya dengan LoanID, Anda dapat menambahkan LoanID ke PARTITION BY
daftar. Jika Anda tertarik untuk mempertahankan ikatan, Anda dapat menggunakan RANK()
bukannya ROW_NUMBER()