ORACLE確定當前記錄和下一條記錄之間的差值

2021-08-15 07:02:43 字數 917 閱讀 6416

今天要給客戶做一張報表,主要是反應當天的話務數量與前一天之間的對比情況,也就是說,假設表結構是這樣的:

日  期

呼入號碼數

2015/12/26

10248

2015/12/27

9640

2015/12/28

9362

2015/12/29

9911

那麼做出來的表應該是這樣的:

日  期

呼入號碼數   

增幅2015/12/26

10248

-29.29%

2015/12/27

9640

-5.93%

2015/12/28

9362

-2.88%

2015/12/29

9911

5.86%

其中 增幅應該是 當前的記錄跟上一天記錄去做對比,這種情況在ireport中應該是可以實現的,但是ireport資料較少。

故從sql入手,目前想到的有兩種方法:

1、拼兩遍sql

select xx from *** a,

select xx from *** b

where a.日期=b.日期-1天

2、使用oracle lead、lag函式

select  日期,

號碼個數,

lag(

號碼個數) over(order by 

日期) 上一天數量 from *** where 1=1

select  日期,

號碼個數,

lead(

號碼個數

) over(order by 

日期) 下一天數量 from *** where 1=1

然後再用相應的公式算出增幅百分比即可 

SQL查詢當前資料上一條和下一條的記錄

id是指當前資料news id引數 方法一 string presql select top 1 from news where news id id order by news id desc string nextsql select top 1 from news where news id ...

Mysql 查詢當前資料上一條和下一條的記錄

獲取當前檔案上一條與下一條記錄的原理是上一條的sql語句,從news表裡按從大到小的順序選擇一條比當前id小的新聞,下一條的sql語句,從news表裡按從小到大的順序選擇一條比當前id大的新聞。如果id是主鍵或者有索引,可以直接查詢 方法1 sql view plain copy 1.select ...

Mysql 查詢當前資料上一條和下一條的記錄

獲取當前檔案上一條與下一條記錄的原理是上一條的sql語句,從news表裡按從大到小的順序選擇一條比當前id小的新聞,下一條的sql語句,從news表裡按從小到大的順序選擇一條比當前id大的新聞。如果id是主鍵或者有索引,可以直接查詢 方法1 1.select from table a where i...