sql – 按表中的分组记录运行总计
发布时间:2020-12-12 07:30:04 所属栏目:MsSql教程 来源:网络整理
导读:我有这样的表(Oracle,10) Account Bookdate Amount 1 20080101 100 1 20080102 101 2 20080102 200 1 20080103 -200... 我需要的是按帐户asc和Bookdate asc按帐户顺序分组的新表格,其中包含一个正在运行的总字段,如下所示: Account Bookdate Amount Running_
我有这样的表(Oracle,10)
Account Bookdate Amount 1 20080101 100 1 20080102 101 2 20080102 200 1 20080103 -200 ... 我需要的是按帐户asc和Bookdate asc按帐户顺序分组的新表格,其中包含一个正在运行的总字段,如下所示: Account Bookdate Amount Running_total 1 20080101 100 100 1 20080102 101 201 1 20080103 -200 1 2 20080102 200 200 ... 有一个简单的方法吗? 提前致谢. 解决方法你真的需要额外的桌子吗?您可以使用简单的查询获得所需的数据,如果您希望它看起来像表格,您可以将其显然创建为视图. 这将为您提供您正在寻找的数据: select account,bookdate,amount,sum(amount) over (partition by account order by bookdate) running_total from t / 这将创建一个视图,向您显示数据,就好像它是一个表: create or replace view t2 as select account,sum(amount) over (partition by account order by bookdate) running_total from t / 如果你真的需要这张桌子,你的意思是你需要不断更新吗?还是只有一次?显然,如果它是一个一个,你可以使用上面的查询“创建表作为选择”. 我使用的测试数据是: create table t(account number,bookdate date,amount number); insert into t(account,amount) values (1,to_date('20080101','yyyymmdd'),100); insert into t(account,to_date('20080102',101); insert into t(account,to_date('20080103',-200); insert into t(account,amount) values (2,200); commit; 编辑: 忘了加;你指定你想要对表进行排序 – 这实际上没有意义,并且让我认为你真的意味着你想要查询/视图 – 排序是你执行的查询的结果,而不是那些在表(忽略索引组织表等). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |