oracle中lead函数,oracle lead()函数 | 学步园
ead()是一個分析函數,適用于oracle 8i以后的版本,
使用這個函數,你可以一次性從表中查詢多條記錄,
而不需要進行表的自連接。
返回值:返回與當前行偏離offset行的列值。
語法:
lead ( expression [, offset [, default] ] )
over ( [ query_partition_clause ] order_by_clause )
expression :可以包含除了分析函數意外的任何oracle內置函數。
offset :可選項,表里偏移當前行的值,默認值為1。
default :可選項,如果offset值超出了當前表范圍,就返回此值,默認值為null.
下面是一個實例:
1.
with orders as(
select to_date('25-09-2007','dd-mm-yyyy') order_date,1000 product_id,20 qty from dual union all
select to_date('26-09-2007','dd-mm-yyyy'),2000,15 from dual union all
select to_date('27-09-2007','dd-mm-yyyy'),1000,8 from dual union all
select to_date('28-09-2007','dd-mm-yyyy'),2000,12 from dual union all
select to_date('29-09-2007','dd-mm-yyyy'),2000,2 from dual union all
select to_date('30-09-2007','dd-mm-yyyy'),1000,4 from dual)
select product_id,order_date,
lead(order_date,1) over (order by order_date) next_order_date
from orders;
PRODUCT_ID ORDER_DATE NEXT_ORDER_DATE
---------- ----------- ---------------
1000 2007-9-25 2007-9-26
2000 2007-9-26 2007-9-27
1000 2007-9-27 2007-9-28
2000 2007-9-28 2007-9-29
2000 2007-9-29 2007-9-30
1000 2007-9-30
--
因為offset值為1,所以查詢出了下一個order_date
如果我們將offset設為2,那么會查詢出往下第二個order_date,
如果offset為3呢,將會查詢出往下第三個order_date,
......
2.使用上面的數據。
select product_id,order_date,
lead(sum(qty),1,0) over (order by order_date) sum_next_qty
from orders
group by product_id,order_date;
PRODUCT_ID ORDER_DATE SUM_NEXT_QTY
---------- ----------- ------------
1000 2007-9-25 8
1000 2007-9-27 4
1000 2007-9-30 15
2000 2007-9-26 12
2000 2007-9-28 2
2000 2007-9-29 0
我們先按product_id分組,再按order_date分組
總結
以上是生活随笔為你收集整理的oracle中lead函数,oracle lead()函数 | 学步园的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10磁盘怎么改名字 Win10磁盘
- 下一篇: php curl ssr,php cur