как то часами
select s.[user], datediff(hh,s.time,e.time) as duration
from actiontable s
join actiontable e on s.[user] = e.[user] and e.actionname = 'enddoing'
where s.actionname = 'startdoing'
дай мне это:
user duration
---------- -----------
userX 745
меняется на datediff(minute,s.time,e.time)
дает это
user duration
---------- -----------
userX 44700
это будет работать для всей таблицы пользователей и их времени начала и окончания, если у вас есть только одно время начала и окончания для каждого ... если у вас нет только одного, тогда это становится немного сложнее Самый простой способ (с mssql 2005+) - сделать что-то вроде этого:
;with sitems as
(
select [user], max([time]) as [time]
from actiontable
where actionname = 'startdoing'
group by [user]
), eitems as
(
select [user], max([time]) as [time]
from actiontable
where actionname = 'enddoing'
group by [user]
)
select s.[user], datediff(minute,s.time,e.time) as duration
from sitems s
join eitems e on s.[user] = e.[user]