SQL Query Pervious Row Optimization
Hier ist meine Tabellenstruktur
MyTable
-----------
ObjectID int (Identity), -- Primary Key
FileName varchar(10),
CreatedDate datetime
...........
...........
...........
Ich muss die Zeit ermitteln, die zum Erstellen eines Datensatzes in einer Datei benötigt wird ... dh ... die Zeit, die zwischen dem vorherigen Datensatz in derselben Datei und dem aktuellen Datensatz derselben Datei verstrichen ist.
ie ... Wenn die Datensätze @ si
ObjectID FileName CreatedDate (just showing the time part here)
-------- -------- -----------
1 ABC 10:23
2 ABC 10:25
3 DEF 10:26
4 ABC 10:30
5 DEF 10:31
6 DEF 10:35
Die erforderliche Ausgabe ist ...
ObjectID FileName CreatedDate PrevRowCreatedDate
-------- -------- ----------- ---------------
1 ABC 10:23 NULL
2 ABC 10:25 10:23
3 DEF 10:26 NULL
4 ABC 10:30 10:25
5 DEF 10:31 10:26
6 DEF 10:35 10:31
Bisher habe ich diese Abfrage erhalten, aber es dauert sehr lange als erwartet ... Gibt es einen besseren Weg, dies zu tun ...
Select A.ObjectID,
A.FileName
A.CreatedDate as CreatedDate,
B.PrevRowCreatedDate,
datediff("SS", '1900-01-01 00:00:00', Coalesce((A.CreatedDate - B.PrevRowCreatedDate),0)) as secondsTaken
from MyTable as A
Cross Apply (
(Select PrevRowCreatedDate = Max(CreatedDate) from MyTable as BB
where BB.FileName = A.FileName and
BB.CreatedDate < A.CreatedDate
)
) as B
Bitte lassen Sie es mich wissen, falls Sie weitere Informationen benötigen
Vielen Dan