Sal*_*med 6 sql-server lag lead
我有一个这样的表:
Number Price Type Date Time
------ ----- ---- ---------- ---------
23456 0,665 SV 2014/02/02 08:00:02
23457 1,3 EC 2014/02/02 07:50:45
23460 0,668 SV 2014/02/02 07:36:34
23461 0,668 SV 2014/02/02 07:37:34
23462 0,668 SV 2014/02/02 07:38:34
23463 0,668 SV 2014/02/02 07:39:34
Run Code Online (Sandbox Code Playgroud)
对于每条记录,我需要上一个/下一个价格.在这种情况下,查询很简单.
Select Lag(price) over (order by date desc, time desc),
Lead(price) over (order by date desc, time desc)
from ITEMS
Run Code Online (Sandbox Code Playgroud)
但我需要结果Where Next price <>记录价格
我的查询是
Select Lag(price) over (order by date desc, time desc) Nxt_Price,
Lead(price) over (order by date desc, time desc) Prv_Price
from ITEMS
Where Nxt_Price <> price
Run Code Online (Sandbox Code Playgroud)
但它拒绝使用该变量
请尝试以下查询:
SELECT Nxt_Price, Prv_Price
FROM
(Select price, Lag(price) over (order by date desc, time desc) Nxt_Price,
Lead(price) over (order by date desc, time desc) Prv_Price
from ITEMS) AS InnerQuery
Where Nxt_Price <> price
Run Code Online (Sandbox Code Playgroud)
它可能会帮助你.
使用公用表表达式。
with myItems as (
select
Lag(price) over (order by date desc, time desc) Nxt_Price,
Lead(price) over (order by date desc, time desc) Prv_Price
from ITEMS
)
select *
from myItems
where Nxt_Price <> Prv_Price
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14448 次 |
| 最近记录: |