Trouver la différence de temps entre deux lignes consécutives dans la même table dans sql

Je suis coincé. J'ai cherché une réponse, mais n'arrive pas à trouver en soustrayant le temps dans le même tableau de deux lignes différentes de la même table qui s'adapte. Je vais avoir un moment difficile avec la requête suivante. Dans le tableau ci-dessous, je tiens à différencier le Délai d'attente d'une ligne à l'TimeIn de la ligne suivante. Envisager dans le tableau suivant pour trouver la différence en minutes entre le Délai d'attente dans la Ligne 1 (10:35) et le TimeIn dans la Ligne 2 (10:38am).

Tableau 1: TIMESHEET

ROW    EmpID       TimeIn                   TimeOut
----------------------------------------------------------------
1       138         2014-01-05 10:04:00      2014-01-05 10:35:00   
2       138         2014-01-05 10:38:00      2014-01-05 10:59:00 
3       138         2014-01-05 11:05:00      2014-01-05 11:30:00  

Résultats attendus

ROW    EmpID       TimeIn                   TimeOut                  Minutes
----------------------------------------------------------------------------
1       138         2014-01-05 10:04:00      2014-01-05 10:35:00       
2       138         2014-01-05 10:38:00      2014-01-05 10:59:00       3
3       138         2014-01-05 11:05:00      2014-01-05 11:30:00       6
etc
etc
etc

En gros, j'ai besoin de différencier la fois dans la requête pour montrer combien de temps les employés étaient en pause.

J'ai essayé de faire une jointure, mais cela ne semble pas fonctionner et je ne sais pas si OVER avec PARTITION est le chemin à parcourir, parce que je n'arrive pas à suivre la logique (Oui, je suis encore à apprendre). J'envisage également de deux tables temporaires et de les comparer, mais ça ne marche pas quand j'ai commencer à changer les jours ou ID de l'employé. Enfin, je pense peut-être LEAD dans un OVER déclaration? Ou est-ce juste simple de faire une DATEDIFF avec un CAST?

Vous probablement besoin de conduire, partition par EmpId, commande par TimeIn. Si quelque chose le long des lignes de lead(TimeIn) over (partition by EmpId order by TimeIn).
J'ai juste regardé ce fil au FIL de la PARTITION d'affaires. C'est la première raison convaincante que j'ai vu pour SQL 2012 ou 2014. La question est balisé sql-server-2008, peut-être cela devrait être changé.

OriginalL'auteur NWHikerOR | 2014-09-30