У меня есть следующие данные, состоящие из значения A
, упорядоченного по MM
(месяц).
Столбец B
вычисляется как GREATEST(current value of A + previous value of B, 0)
по типу таблицы.
Как я могу вычислить B
с помощью SQL Query?
- Я пытался использовать аналитические функции, но мне не удалось добиться успеха.
- Я знаю, что существует Model Clause; Я нашел аналогичный пример, но я не знаю, с чего начать.
Я использую Oracle 10g, поэтому я не могу использовать рекурсивные запросы.
Вот мои тестовые данные:
MM | A | B
-----------+--------+------
2012-01-01 | 800 | 800
2012-02-01 | 1900 | 2700
2012-03-01 | 1750 | 4450
2012-04-01 | -20000 | 0
2012-05-01 | 900 | 900
2012-06-01 | 3900 | 4800
2012-07-01 | -2600 | 2200
2012-08-01 | -2600 | 0
2012-09-01 | 2100 | 2100
2012-10-01 | -2400 | 0
2012-11-01 | 1100 | 1100
2012-12-01 | 1300 | 2400
И вот "определение таблицы":
select t.* from (
select date'2012-01-01' as mm, 800 as a from dual union all
select date'2012-02-01' as mm, 1900 as a from dual union all
select date'2012-03-01' as mm, 1750 as a from dual union all
select date'2012-04-01' as mm, -20000 as a from dual union all
select date'2012-05-01' as mm, 900 as a from dual union all
select date'2012-06-01' as mm, 3900 as a from dual union all
select date'2012-07-01' as mm, -2600 as a from dual union all
select date'2012-08-01' as mm, -2600 as a from dual union all
select date'2012-09-01' as mm, 2100 as a from dual union all
select date'2012-10-01' as mm, -2400 as a from dual union all
select date'2012-11-01' as mm, 1100 as a from dual union all
select date'2012-12-01' as mm, 1300 as a from dual
) t;