Requête SQL de la Différence entre les valeurs de deux lignes et de deux colonnes

J'ai du mal à le faire fonctionner, à l'aide de Requêtes T-SQL (SQL SERVER 2008) pour le problème suivant:

Ky  ProductID  Start #  End #    Diff
1     100        10      12        0
2     100        14      20        2 (14 - 12)
3     100        21      25        1 (21 - 20)
4     100        30      33        5 (30 - 25) 
1     110        6       16        0
2     110        20      21        4 (20 - 16)
3     110        22      38        1 (22 - 21)

comme vous pouvez le voir j'ai besoin de la différence entre les valeurs de deux lignes et de deux colonnes.

J'ai essayé

with t1 
( select ROW_NUMBER() OVER (PARTITION by ProductID ORDER BY ProductID, Start# ) as KY
       , productid
       , start#
       , end# 
  from mytable)

et

select DATEDIFF(ss, T2.complete_dm, T1.start_dm)
   , <Keeping it simple not including all the columns which I selected..>  
FROM T1 as T2 
RIGHT OUTER JOIN T1 on T2.Ky + 1  = T1.KY  
             and T1.ProductID = T2.ProductID 

Le problème avec la requête ci-dessus est lorsque le productID passe de 100 à 110 néanmoins, il calcule la différence.

Toute aide en cas de modification de la requête ou de toute solution, plus simple, beaucoup apprécié.

Grâce

  • Voulez-vous calculer la différence, juste pour ProductID 100. J'ai essayé la même requête que cela fonctionne pour moi. Le Tableau que vous nous avez montré, c'est que votre sortie désirée? --> sqlfiddle.com/#!3/e4f23/6
  • Il devrait être de 110 ainsi. Enfait le desied de sortie est pour le nombre de colonnes, juste ne pas inclure comme vous pouvez le voir, la différence est de type datetime, mais juste pour garder les choses simples, j'avais donné le #. J'ai vu la requête, semble être la même que j'ai essayé je pense que je dois avoir raté quelque chose..C'est le résultat voulu que je veux.
InformationsquelleAutor Amar | 2013-10-05