Oracle函数之LAG与LEAD
2015-10-19 21:49
597 查看
这两个函数,是偏移量函数,其用途是:可以查出同一字段下一个值或上一个值,并作为新列存在表中。
1。 select * from tache_columns
TCH_ID COL_NAME_CN COL_VALUE
------------- -------------------------------------------------------------------------------- ------
1 张三 10
2 李四 21
3 王五 23
1 aaa 14
1 bbb 20
2。select t.tch_id,
t.col_name_cn,
t.col_value,
lead(t.col_value,1,null) over(partition by t.tch_id order by t.col_value) sal
from tache_columns t;
![](http://hi.csdn.net/attachment/201110/13/0_1318500369S0I0.gif)
注:lead函数是先按tch_id分组,按col_val排序,并把当前行col_value的下一个值放到sal中,比如:
col_value=10的下一个值是14,col_value=14 的下一个值是20。函数中的null是当没有下一个值时用null代替,当然也可以用其他值替换NULL.
3。select t.tch_id,
t.col_name_cn,
t.col_value,
lag(t.col_value,1,null) over(partition by t.tch_id order by t.col_value) sal
from tache_columns t
![](http://hi.csdn.net/attachment/201110/13/0_1318500603MX2F.gif)
lag与lead相反。函数中的1是可以修改的。具体可以运行查看
4。select t.tch_id,
t.col_name_cn,
t.col_value,
lag(t.col_value) over(order by t.col_value) sal
from tache_columns t
![](http://hi.csdn.net/attachment/201110/13/0_13185007021uP4.gif)
当然也可以不要partition,lag的默认参数是1
1。 select * from tache_columns
TCH_ID COL_NAME_CN COL_VALUE
------------- -------------------------------------------------------------------------------- ------
1 张三 10
2 李四 21
3 王五 23
1 aaa 14
1 bbb 20
2。select t.tch_id,
t.col_name_cn,
t.col_value,
lead(t.col_value,1,null) over(partition by t.tch_id order by t.col_value) sal
from tache_columns t;
![](http://hi.csdn.net/attachment/201110/13/0_1318500369S0I0.gif)
注:lead函数是先按tch_id分组,按col_val排序,并把当前行col_value的下一个值放到sal中,比如:
col_value=10的下一个值是14,col_value=14 的下一个值是20。函数中的null是当没有下一个值时用null代替,当然也可以用其他值替换NULL.
3。select t.tch_id,
t.col_name_cn,
t.col_value,
lag(t.col_value,1,null) over(partition by t.tch_id order by t.col_value) sal
from tache_columns t
![](http://hi.csdn.net/attachment/201110/13/0_1318500603MX2F.gif)
lag与lead相反。函数中的1是可以修改的。具体可以运行查看
4。select t.tch_id,
t.col_name_cn,
t.col_value,
lag(t.col_value) over(order by t.col_value) sal
from tache_columns t
![](http://hi.csdn.net/attachment/201110/13/0_13185007021uP4.gif)
当然也可以不要partition,lag的默认参数是1
相关文章推荐
- ORACLE EXECUTE IMMEDIATE 'DML' 不能自动提交COMMIT 'DDL'触发COMMIT
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
- oracle 创建表空间,用户
- oracle11g dataguard中standby库文件坏块的修复过程
- Oracle左外连接、右外连接、全外连接
- oracle课堂收录-过程中的事务处理
- oracle课堂收录-默认值
- oracle课堂收录-参数
- Navicat_Premium连接Oracle_10g
- Oracle 数据泵导数据(expdp,impdp)
- Oracle 11G Active DataGuard(ADG)搭建配置过程
- Oracle 表空间及用户创建 sql 语句
- ORACLE 区间分区(Interval Partitioning)
- Centos 6: nginx+php+oracle安装配置
- Oracle 获取当前日期及日期格式
- oracle 子查询的解决方法~
- 【PLSQL】安装PLSQL访问64位Oracle
- Oracle 时间相减得出毫秒、秒、分、时、天,,【转】
- ORACLE配置tnsnames.ora文件实例
- ORACLE临时表总结