Запрос на предыдущее значение определённой даты
Есть запрос:
select
type_room_rus, period,
case
when type_room_rus is not null then sum(price) / sum(area) end as price_1g
from pbi#12_everyweekly
where status_kv = 'AVAILABLE'
group by type_room_rus, period
order by type_room_rus, period
Результат запроса:
Как можно сделать, чтобы справа создавалась колонка с данными из другой ячейки (предыдущего периода). Так например, в строке №2 будет справа от price_1g число из строки №1 и так далее. Проще говоря [price_1g] - 1.
Ответы (1 шт):
Автор решения: Vitaliy Zlobin
→ Ссылка
По итогу:
SELECT *,
LAG(price_1g, 1) OVER(ORDER BY num_month) AS prev
FROM
(
SELECT type_room_rus,
CASE WHEN type_room_rus IS NOT NULL THEN SUM(price) / SUM(area) END AS price_1g,
period
FROM pbi#12_everyweekly
WHERE status_kv = 'AVAILABLE'
GROUP BY type_room_rus, period
) AS Subquery
ORDER BY type_room_rus, period
Можно через CTE(если на MS SQL пишите), как Akina предлагает, а можно с подзапросом - это решение подойдёт большинству СУБД.
