将以前的值添加到同一组中的当前值

时间:2017-07-20 18:22:13

标签: sql oracle

我有一张如下表格

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数据库。

1 个答案:

答案 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;