données:SQL Suivi des requêtes
EmpNumber, TimeStamp, AreaName 10632, 2009-11-23 16:40:33.000, OUT_1 10632, 2009-11-23 16:39:03.000, IN_1 10632, 2009-11-23 16:38:56.000, IN_1 10632, 2009-11-23 15:31:51.000, OUT_1 10632, 2009-11-23 15:31:48.000, IN_1 10632, 2009-11-23 15:31:43.000, IN_1 10632, 2009-11-23 15:31:14.000, OUT_1 10632, 2009-11-23 15:31:08.000, IN_1 10632, 2009-11-23 15:29:18.000, OUT_1 10632, 2009-11-23 15:28:29.000, IN_1 10632, 2009-11-23 15:27:35.000, OUT_1 10632, 2009-11-23 15:26:35.000, IN_1 10632, 2009-11-23 15:22:55.000, IN_1
Voici la requête que je utilise actuellement. Le problème est sur les entrées IN_1
multiples. Je voudrais seulement suivre la différence de temps entre la première entrée IN_1
et l'entrée suivante OUT_1
et ignorer l'entrée IN_1
entre. Bien sûr, vous pouvez avoir 100 IN_1
mais le temps n'est suivi qu'à partir du premier IN_1
jusqu'au prochain OUT_1
.
Pour compliquer encore les choses, il pourrait être un IN_1
, IN_2
, IN_3
, OUT_1
, OUT_2
, OUT_3
et vous pouvez entrer IN_1
et laisser OUT_3
et il fonctionnerait comme il était IN_1
, OUT_1
.
Je ne suis pas le bit "Pour compliquer les choses". Aussi, quelle est votre question? –
Je ne suis pas très clair sur ce que vous voulez faire, mais je suppose (si vous utilisez tsql 2005+) vous devez utiliser un CTE récursif ou une boucle. – Hogan
C'est le suivi du temps sur le contrôle d'accès. Quelqu'un pourrait glisser une carte deux fois sur un lecteur IN_1. Le problème est quand j'exécute la requête ci-dessus je reçois deux DurationMins différents en utilisant le premier et le deuxième balayage. Donc, au lieu de signaler que quelqu'un était dans 1.616 minutes, ils sont dans 1.616 et 1.5 (en utilisant l'exemple ci-dessus). Donc, pour compliquer les thigns un peu plus, cela montre juste qu'ils pourraient venir dans une des 3 portes d'entrée et partir de n'importe quelle porte qu'ils choisissent. Cela ne devrait pas être un gros problème, mais tout ce que je fais doit aussi pouvoir fonctionner correctement dans cette situation. – Nick