К сожалению, SQL не приходит ко мне очень легко. У меня две таблицы, таблица Loan
и таблица LoanPayments
.Получить последнюю запись за каждый месяц
LoanPayments Таблица:
ID (первичный ключ), LoanID (совпадает с ID по кредиту таблицы), PaymentDate, количество, и т.д.
Мне нужен SQL заявление, что может дать мне последний платеж, введенный каждый месяц (если таковой имеется). Мое текущее заявление не дает мне результатов. Существует также проблема, что иногда в течение этого месяца будет привязка к наибольшей дате, поэтому мне также нужно иметь возможность справиться с этим (моя идея состояла в том, чтобы выбрать самый большой идентификатор в случае галстука).
Это то, что я до сих пор (я знаю, что это неправильно, но я не знаю, почему.):
SELECT lp.ID, lp.LoanID, lp.PaymentDate
FROM LoanPayments lp
WHERE lp.PaymentDate in (
SELECT DISTINCT MAX(PaymentDate) as PaymentDate
FROM LoanPayments
WHERE IsDeleted = 0
AND ReturnDate is null
GROUP BY YEAR(PaymentDate), Month(PaymentDate)
)
AND CAST(PaymentDate as date) >= CAST(DATEADD(mm, -24, GETDATE()) as date)
Последняя часть просто фильтрации, так что я только получить последние 24 месяцев платежей , Спасибо за вашу помощь и за то, что нашли время, чтобы помочь мне в этом вопросе.
'SELECT TOP 1 ... [query] ... ORDER BY myDateColumn DESC' –
Предполагается, что это ТОП 1 в начале заявления? Потому что это просто дает мне новейший платеж в таблице. – TOlsen
Вы хотите, чтобы только одна запись в месяц или одна запись в месяц за LoanID? –