oracle資料鄰行(隔行)處理

2021-08-17 05:22:22 字數 1622 閱讀 7111

--語法
--向後 lag (value_expression [,offset] [,default]) over ([query_partition_clause] order_by_clause)

--向前 lead (value_expression [,offset] [,default]) over ([query_partition_clause] order_by_clause)

select a,lead(a,1,a)over(order by px asc)lead_data,lag(a,1,a)over(order by px asc)lag_date,b,c,d,px,type from

( select 1 a,2 b,3 c,4 d,1 px,'s' type from dual

union all

select 12 a,20 b,3 c,12 d,3 px,'s' type from dual

union all

select 5 a,6 b,7 c,8 d,2 px,'m' type from dual

union all

select 5 a,6 b,7 c,8 d,4 px,'m' type from dual

)--在些基礎上可做靈活擴充套件處理[分組排序]

select a,lead(a,1,a)over(partition by type order by px asc)lead_data,lag(a,1,a)over(partition by type order by px asc)lag_date,b,c,d,px,type from

( select 1 a,2 b,3 c,4 d,1 px,'s' type from dual

union all

select 12 a,20 b,3 c,12 d,3 px,'s' type from dual

union all

select 5 a,6 b,7 c,8 d,2 px,'m' type from dual

union all

select 5 a,6 b,7 c,8 d,4 px,'m' type from dual

)--在些基礎上可做靈活擴充套件處理[相加、相減、乘、除、字條串操作等]

select a,(a/lead(a,1,a)over(order by px asc))lead_data,(b+lag(a,1,a)over(order by px asc))lag_date,b,c,d,px,type from

( select 1 a,2 b,3 c,4 d,1 px,'s' type from dual

union all

select 12 a,20 b,3 c,12 d,3 px,'s' type from dual

union all

select 5 a,6 b,7 c,8 d,2 px,'m' type from dual

union all

select 5 a,6 b,7 c,8 d,4 px,'m' type from dual

)

lag 和lead 有三個引數,第乙個引數是列名,第二個引數是偏移的offset,第三個引數是超出記錄視窗時的預設值

Oracle 處理資料

drop table 刪除表 purge recyclebin 清除 站 alter table 表名 move 清除某個表的碎片,但是在清除後需要重建索引alter index index name rebuild sql的型別 dml data manipulation language 資料操...

oracle資料表行轉列

今天看到乙個題目,要求是行轉列,回來查了一下資料 題目要求是把 首先建立表 create table a year varchar2 255 month varchar2 255 amount number 然後插入資料 insert into a values 2016 1 1.1 insert ...

Oracle學習 處理資料

2.2 update操作 2.3 delete操作 3 oracle中的事務 4 偽列rownum行號的使用 dml data manipulation language 資料操作語言 select insert update delete ddl data definition language ...