用于添加每行值的sql函数
表a用于添加每行值的sql函数,sql,oracle,cursor,procedure,func,Sql,Oracle,Cursor,Procedure,Func,表a id 1 2 3 4 我希望输出如下所示: id id_new 1 1 2 3 3 6 4 10 基本上,我们是在每行中添加一列的行值 i、 E2=1+2,3=1+2+3等等 您可以使用任何光标、函数或查询您似乎想要一个累计总和。ANSI标准函数是Oracle支持的窗口函数: select id, sum(id) over (order by id) as id_new from t; 不过,使用名为id的列执行此操作似乎很奇怪。通常,累计金额是以计数、金额或可测量
id
1
2
3
4
我希望输出如下所示:
id id_new
1 1
2 3
3 6
4 10
基本上,我们是在每行中添加一列的行值
i、 E2=1+2,3=1+2+3等等
您可以使用任何光标、函数或查询您似乎想要一个累计总和。ANSI标准函数是Oracle支持的窗口函数:
select id, sum(id) over (order by id) as id_new
from t;
不过,使用名为id的列执行此操作似乎很奇怪。通常,累计金额是以计数、金额或可测量的东西为基础的
如果需要实际更新数据,则可以使用相关子查询:
update t
set id_new = (select sum(id) from t t2 where t2.id <= t.id);
这在一张小桌子上可以用。对于任何更大的问题,请使用merge.小菜一碟
SQL> with test (id) as
2 (select 1 from dual union
3 select 2 from dual union
4 select 3 from dual union
5 select 4 from dual
6 )
7 select id, sum(id) over (order by id) id_new
8 from test
9 order by id;
ID ID_NEW
---------- ----------
1 1
2 3
3 6
4 10
SQL>
[编辑,通用选项]
Pradeep的评论可能是对甲骨文的评论。但还有一种替代方法,即使用相关子查询来计算滚动和:
SELECT
id,
(SELECT SUM(t2.id) FROM yourTable t2 WHERE t2.id <= t1.id) id_new
FROM yourTable t1;
这个答案可能有一些优点,因为不是每个数据库都支持分析功能。即使我们在Java应用程序的上下文中使用Oracle,像JPA或Hibernate这样的ORM接口也可能不支持分析功能。sumidoverorder by idha ha+1解码我的名字@Pரதீப் 我知道是你,因为以前你的名字不在泰米尔语中,我知道一些泰米尔语,因为我的大多数同事都是泰米尔人:-。让它成为一个广义的查询,对于1,2,3…你去哪里,@sheetal
SELECT
id,
(SELECT SUM(t2.id) FROM yourTable t2 WHERE t2.id <= t1.id) id_new
FROM yourTable t1;