Je voudrais vous requestr de l'aide sur la façon de countr le time total passé entre plusieurs inputs et sorties. La table d'exemple ressemble à ceci (pour un user):
Date_Time | Event | User ------------------------|--------------|--------- 2016-08-01 09:19:11.000 | Reader entry | John D. 2016-08-01 10:00:56.997 | Reader exit | John D. 2016-08-01 10:09:24.000 | Reader entry | John D. 2016-08-01 11:14:12.000 | Reader exit | John D. 2016-08-01 12:41:15.997 | Reader entry | John D. 2016-08-01 12:45:28.000 | Reader exit | John D. 2016-08-01 12:47:23.000 | Reader entry | John D. 2016-08-01 13:37:06.997 | Reader exit | John D. 2016-08-01 13:38:54.997 | Reader entry | John D. 2016-08-01 13:43:01.000 | Reader exit | John D.
Je voudrais countr le time total passé de l'input à la sortie dans un jour donné pour une personne donnée. Dans l'exemple ci-dessus, pour John D., ce sera au total 02:40:30.
J'utilise MSSQL 2012.
Merci pour votre aide à l'avance, Pawel
J'utiliserais la fonction de window LAG
select [user], sum(datediff(s,prev_date_time,date_time)) as seconds from (select [user], date_time, Event, lag(Date_time) over (partition by [user] order by Date_time) as prev_date_time, lag(Event) over (partition by [user] order by Date_time) as prev_event from myTable) as t where Event = 'Reader exit' and prev_event = 'Reader entry' group by [user];
SORTIE
user seconds John D. 9876
C'est en fait 2:44:36, je ne sais pas comment vous avez eu 02:40:30.