SQL之更改累积和的值
来源:互联网 发布:hl线切割编程软件 编辑:程序博客网 时间:2024/06/10 16:56
首先创建一个示例的视图:
SQL> create or replace view test_sum(id ,amt,trx) 2 as 3 select 1,100,'PR' from dual union all 4 select 2,100,'PR' from dual union all 5 select 3,50,'PY' from dual union all 6 select 4,100,'PR' from dual union all 7 select 5,200,'PY' from dual union all 8 select 6,100,'PY' from dual;View created.SQL> select * from test_sum; ID AMT TR---------- ---------- -- 1 100 PR 2 100 PR 3 50 PY 4 100 PR 5 200 PY 6 100 PY6 rows selected.SQL>
此视图模拟存取款视图
id 是唯一列
amt 表示每次事务处理(取款/存款)涉及的类型
trx 定义事务处理的类型,取款是PY,存款是PR
需求:计算每次存、取款后的金额,如果TRX是PR,则加上AMT所代表的金额,否则减去。
第一步:首先把取款的值变为负数
SQL> select id, 2 case when trx = 'PR' then '存款' else '取款' end 存取类型, 3 amt 金额, 4 case when trx = 'PR' then amt else -amt end 变更后的值 5 from test_sum 6 order by id; ID 存取类型 金额 变更后的值---------- -------- ---------- ---------- 1 存款 100 100 2 存款 100 100 3 取款 50 -50 4 存款 100 100 5 取款 200 -200 6 取款 100 -1006 rows selectedSQL>
第二步,使用sum分析函数
SQL> select id, 2 case when trx = 'PR' then '存款' else '取款' end 存取类型, 3 amt 金额, 4 sum(case when trx = 'PR' then amt else -amt end) over(order by id) as 余额 5 from test_sum 6 order by id; ID 存取类型 金额 余额---------- -------- ---------- ---------- 1 存款 100 100 2 存款 100 200 3 取款 50 150 4 存款 100 250 5 取款 200 50 6 取款 100 -506 rows selectedSQL>
到此,更改累计和的值的步骤就已经做完了。
阅读全文
0 0
- SQL之更改累积和的值
- SQL的经验累积
- Hive 累积和的计算
- SQL Server中备份文件累积的问题
- 累积的
- 矩阵累积和的最大路径
- sqlserver 常用sql 累积
- Hive窗口函数之累积值、平均值、首尾值的计算学习
- tip - SQL报表服务 - 使用RunningValue函数计算累积值
- SQL 字符集的更改
- 计算累加和、累积和、日期的定义及其使用
- imos-累积和法
- 经验累积之数据库故障反映的存储问题
- rman备份中差异增量和累积增量的区别
- Oracle的差异增量备份和累积增量备份
- 用关心和爱累积出来的一种本能
- Oracle的差异增量备份和累积增量备份
- 使用量账本和累积量的区别
- hdfs 小文件合并
- 9-27NOIP模拟赛总结
- 设计模式-代理模式 C++实现
- int operator *() 和operator int*()的区别
- 线性表中单链表基本功能实现
- SQL之更改累积和的值
- 如何用Altium Designer 15 快速准确的构建一个PCB封装
- sitemesh中的decorators.xml的用法
- JavaScript-变量-原始类型primitive type
- Bridge Across Islands POJ
- ES6——Generator
- real time cooperative editing system
- org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;
- CDN详解