Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как вывести только последние записи в таблице SQL?

Энергосбыт, Окружко Д.С. Ученик (90), на голосовании 8 месяцев назад
Есть таблица А: ID, NAME (Список людей)
Есть таблица Б: ID, PERIOD, ID_A, PAYMENT
ID - Уникален в каждой таблице.
PERIOD - не уникален. Строка в формате XXXX.YY (XXXX - Год, YY - месяц). Это, условно, период оплаты. (Люди платят раз в месяц. В идеале)
ID_A - соответствует ID в таблице A, однако один ID_A имеет несколько строк с разным (или нет) PERIOD.
PAYMENT - Float число
Мне нужно сделать запрос и получить последние оплаты каждого человека. В виде:
A.ID , B.PERIOD, B.PAYMENT
Голосование за лучший ответ
myodo.ru Мудрец (12808) 9 месяцев назад
with b as (select b.*,row_number()over(partition by id order by period desc)rn from "Б" b)
select a.id, period, payment from "А" a left join b on a.id = b.id and b.rn=1

Не проверял
Danil Мыслитель (6987) 9 месяцев назад
SELECT ta.id ,tb.period,tb.payment FROM table_b tb JOIN (SELECT MAX(id) AS id,id_a FROM table_b GROUP BY id_a) AS gt ON tb.id = gt.id JOIN table_a ta ON ta.id = tb.id _a
Похожие вопросы