私はあなたのデータ構造について仮定を立てましたが、その理論はあなたにも当てはまるはずです
-- Example table
DECLARE @t table (
action_description char(20)
, when_occured datetime
);
-- Set up data
INSERT INTO @t (action_description, when_occured)
VALUES ('clarification' , DateAdd(mi, -9, Current_Timestamp)) -- Include
, ('clarification' , DateAdd(mi, -8, Current_Timestamp)) -- Include
, ('clarification' , DateAdd(mi, -7, Current_Timestamp)) -- Include
, ('clarification' , DateAdd(mi, -6, Current_Timestamp))
, ('clarification hold', DateAdd(mi, -5, Current_Timestamp))
, ('clarification' , DateAdd(mi, -4, Current_Timestamp)) -- Include
, ('clarification' , DateAdd(mi, -3, Current_Timestamp)) -- Include
, ('clarification' , DateAdd(mi, -2, Current_Timestamp)) -- Include
, ('clarification' , DateAdd(mi, -1, Current_Timestamp)) -- Include
, ('clarification' , DateAdd(mi, 0, Current_Timestamp)) -- Include
, ('clarification' , DateAdd(mi, +1, Current_Timestamp))
, ('clarification hold', DateAdd(mi, +2, Current_Timestamp))
, ('clarification' , DateAdd(mi, +3, Current_Timestamp)) -- Include
, ('clarification' , DateAdd(mi, +4, Current_Timestamp))
, ('clarification hold', DateAdd(mi, +5, Current_Timestamp))
, ('clarification hold', DateAdd(mi, +6, Current_Timestamp))
, ('clarification' , DateAdd(mi, +7, Current_Timestamp)) -- Include
, ('clarification' , DateAdd(mi, +8, Current_Timestamp))
, ('clarification hold', DateAdd(mi, +9, Current_Timestamp));
; WITH all_actions AS (
SELECT action_description
, when_occured
, Row_Number() OVER (ORDER BY when_occured) As row_num -- Provide a sequence for joining
FROM @t
)
SELECT a1.action_description
, a1.when_occured
FROM all_actions As a1
LEFT
JOIN all_actions As a2 -- Join back to self
ON a2.row_num = a1.row_num + 1 -- on previous row
AND a2.action_description = 'clarification hold' -- where the previous row had this action
WHERE a1.action_description = 'clarification' -- Only want to show clarification actions
AND a2.action_description IS NULL -- and exclude those who had a row in the join