【发布时间】:2012-08-27 22:23:17
【问题描述】:
我有以下数据,由A 值组成,按MM(月)排序。
B 列以类似电子表格的方式计算为 GREATEST(current value of A + previous value of B, 0)。
如何使用 SQL 查询计算 B?
- 我尝试使用分析函数,但未能成功。
- 我知道有Model Clause;我找到了a similar example,但我不知道从哪里开始。
我使用的是 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;
【问题讨论】:
-
我认为你的最大意思是最大
-
是的,很抱歉。我还在说电子表格语言而不是 SQL。
标签: sql oracle recursive-query analytic-functions cumulative-sum