Исходя из моего понимания вашего вопроса (подлежит пересмотру на основе ваших разъяснений), довольно просто получить то, что вы хотите: во-первых, вы хотите любые элементы, в которых поле Events
содержит слово "завершено". Кажется, это поле текстовое, поэтому вам, вероятно, потребуется использовать оператор LIKE
, чтобы получить нужные записи:
select *
from Items
where upper(Events) like '%COMPLETE%'
Но, похоже, вам нужна разница во времени между первым и последним элементом в группе независимо от текста события. Таким образом, вы можете самостоятельно присоединиться к таблице, чтобы получить все элементы, а затем получить минимальное и максимальное время для этого элемента, группируя по идентификатору. Например, взгляните на следующее (я позволил себе переопределить вашу таблицу на Events
и переименовать столбцы в EventID
, EventTime
и EventText
:
select
CompleteEvents.EventID
,min(AllEvents.EventTime) first_event
,max(AllEvents.EventTime) last_event
,datediff(s, min(AllEvents.EventTime), max(AllEvents.EventTime)) seconds_difference
from Events CompleteEvents
inner join Events AllEvents on
AllEvents.EventID = CompleteEvents.EventID
where
upper(CompleteEvents.EventText) like '%COMPLETE%'
group by CompleteEvents.EventID
Посмотрите на эту скрипту SQL для того же запроса.