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

PL SQL: почему FIRST VALUE с сортировкой DESC и LAST_VALUE выдают разные значения?

Дмитрий Митяев Ученик (3), закрыт 4 года назад
Суть вопроса. Увидел в скипте коллег функцию FIRST_VALUE с обратной сортировкой по DESC.
Мне его нужно переписать под другую СУБД, которая DESC не понимает

SELECT distinct account_id,
FIRST_VALUE(amount)over(PARTITION BY account_id ORDER BY payment_date desc)last_payment
FROM kollecto.payments
where account_id in (759318,759320,759322,759324)
order by account_id;

Сразу возник вопрос: а почему нельзя использовать LAST_VALUE c сортировкой по умолчанию?

Попробовал:

SELECT distinct account_id,
LAST_VALUE(amount)over(PARTITION BY account_id ORDER BY payment_date)last_payment
FROM kollecto.payments
where account_id in (759318,759320,759322,759324)
order by account_id;

Но проблема в том, что вернулся сильно другой набор значений. (см. скрины ниже)

В чем тут загвоздка?
Дополнен 4 года назад
Лучший ответ
Андрей Высший разум (425764) 4 года назад
Вот тут https://oracleplsql.ru/last_value-function.html предлагают использовать тип окна
RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING

Но я с Oracle не работал и оценить смысл рекомендации не могу.
Остальные ответы
Похожие вопросы