RecordNo Speed
-------- -----
1 0
2 0
3 0
4 0
5 23
6 66
7 48
8 0
9 31
10 0
11 34
12 23
Приведенные выше данные показывают скорость транспортного средства за определенный период времени, учитывая приведенные выше данные, которые мне нужны для достижения результата ниже:
RecordNo Speed LastAcceleration
-------- ----- ----------------
1 0 0
2 0 0
3 0 0
4 0 0
5 23 23
6 66 66
7 48 66
8 0 66
9 31 31
10 0 31
11 34 34
12 23 34
Приведенный ниже код почти присутствует, но он падаетRecordno 8:
select
curr.recordno,curr.speed
,CASE WHEN curr.speed >= ISNULL(prev.speed,0) THEN curr.speed
ELSE (
SELECT MAX(speed) FROM speedtest
WHERE recordno between (CASE WHEN curr.speed >= prev.speed then curr.recordindex else prev.recordno end ) and curr.recordno
)
END as LastAcceleration
From speedtest prev RIGHT JOIN speedtest curr
on prev.vrm = curr.vrm
and prev.recordno+1 = curr.recordno
order by curr.recordno
Я думаю, что слишком долго смотрел на это.Я пробовал самостоятельные соединения с коррелированными подзапросами, но думаю, что мне не хватает чего-то очевидного?Это для проекта 2008 года, поэтому не нужно работать с какими-либо версиями до этого.Любая помощь будет оценена.