Lag() mit Bedingung in sql server

ich habe eine Tabelle wie diese:

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

Für jede EG muss ich den vorherigen/nächsten SV-Preis. In diesem Fall wird die Abfrage einfach.

Select Lag(price, 1, price) over (order by date desc, time desc),
Lead(price, 1, price) over (order by date desc, time desc)
from ITEMS

Aber es gibt einige spezielle Fälle, wo zwei oder mehr Zeilen EG Typ:

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
23658    2,4       EC     2014/02/02     07:50:45
23660    2,4       EC     2014/02/02     07:50:48
23465    0,668     SV     2014/02/02     07:36:34 

kann ich Lead/Lag in diesen Fällen? Wenn nicht, habe ich eine Unterabfrage verwenden?

InformationsquelleAutor user3292586 | 2014-02-14
Schreibe einen Kommentar