我有一张如下表格
id depid sal
1 1 100
2 1 200
3 2 300
4 2 400
我希望我的输出如下表所示。 在输出中发生的是,Sal值通过添加相同deptid的先前值而增加。
id depid sal
1 1 100
2 1 300
3 2 300
4 2 700
任何想法我怎样才能做到这一点......?我正在使用oracle数据库。
答案 0 :(得分:3)
分析功能。
select id, depid, sum(sal) over( partition by depid order by id) sal from test;
以分析方式求和函数,将从开始行到当前行的所有行相加,这是默认行为
Extende version。
select id, depid, sum(sal) over( partition by depid order by id range unbounded preceding) sal from test;
最后的选择。
select id, depid, sum(sal) over( partition by depid order by id range between unbounded preceding and current row) sal from test;
这些例子中的每一个都完全相同。我已经添加它以向您展示它是如何工作的。
有关详细信息,请查看文档Analitic function
*评论后添加。
select id, depid, sum(sal) over( partition by depid order by id rows 1 preceding) sal from test;
select id, depid, sum(sal) over( partition by depid order by id rows between 1 preceding and current row) sal from test;