>>>I have a log table with 4000 rows, each with a datetime stamp of when an action occured. I am trying to do a "date diff" between each row, and only show those rows that have taken longer than n seconds. I'm trying to get away from doing a table scan, does anyone have any help for doing it with pure SQL?
>>
>>
select * ;
>>from logtable lt ;
>>where lt.timestamp-lnGap > ;
>>(select max(timestamp) from logtable where timestamp < lt.timestamp)
>
>Thanks! I now want to add another column, which shows how long it actually took. How can I add that calculated column?
I can't think of a way of doing this without an UDF (
UPDATE does not allow sub-queries):
update logtable set gap = findgap(timestamp)
function findgap
lparameters tm
local array laQry(1)
select max(timestamp) from logtable where timestamp < tm into array laQry
if empty(laQry(1))
laQry(1) = tm
endif
return tm-laQry(1)
----------------------------------
António Tavares Lopes