StartTime フィールドを追加して、
"END"レコードの方に対応する"START"の時刻を格納するという方法にしてみました。
発想の柔軟さ、パフォーマンスへの配慮、さすがhatenaさんです。
標準SQLのウィンドウ関数 LAG が利用可能な SQLServer だと
以下のSQLで hatenaさんと同等のロジックになりそうですね。
SELECT EVENT
, starttime
, endtime
, datediff( second, starttime, endtime ) DURATION
FROM
(
SELECT EVENT
, E_Time endtime
, E_Cond
-- OVER句における E_Cond DESC の指定は不要かも
, LAG( E_Time, 1 )
OVER ( PARTITION BY EVENT
ORDER BY E_Time, E_Cond DESC ) starttime
FROM 表1
)
VBA_PART
WHERE E_Cond = 'END' ;
通報 ...