計算之前添加ROWNUMBER:
create table #test ([book] char(1), [value] int, [date] datetime)
insert into #test values ('A', 4, '2017-07-17 09:16:44.480')
insert into #test values ('A', 2, '2017-08-15 10:05:58.273')
insert into #test values ('B', 3, '2017-04-15 10:05:58.273')
insert into #test values ('C', 2, '2017-08-15 10:05:58.273')
insert into #test values ('B', 3, '2017-04-13 10:05:58.273')
insert into #test values ('B', 3, '2017-04-12 10:05:58.273')
;with cte as(
Select ROW_NUMBER() OVER (order by [book], [date]) as rownumber, *
from #test)
select distinct [1].book, abs(first_value([1].[Value]) over (partition by [1].book order by [1].rownumber desc) - [2].val2) as [Difference]
from cte [1]
inner join
(select rownumber, book, first_value([Value]) over (partition by book order by rownumber desc) as val2
from cte) [2] on [1].book = [2].book and [1].rownumber < [2].rownumber
的MySQL是不一樣的SQL服務器。請僅標記您使用的數據庫。 –
@RaymondNijland指出。它是SQL服務器。謝謝 –
您是否只關心兩個最近行的價值差異?所以如果2017-09-10的D = 5和2017-09-12的D = 10以及2017-09-13的D = 20,那麼你是否關心2017-09-10的紀錄?在您的示例數據中,B沒有明確說明,因爲差異總是*爲零。 –