2010-10-11 1 views
2

Pouvez-vous montrer comment cela peut-il être fait dans t-sql?t-sql - calculer la différence entre les dates pour chaque ligne

dossiers d'échantillons

accountnumber trandate 
------------------------- 
1000   02-11-2010 
1000   02-12-2010 
1000   02-13-2010 
2000   02-10-2010 
2000   02-15-2010 

Comment calculer le nombre de jours entre chaque transaction pour chaque ACCOUNTNUMBER? comme ceci

accountnumber trandate  # of days 
---------------------------------------- 
1000   02-11-2010  0 
1000   02-12-2010  1 
1000   02-13-2010  1 
2000   02-10-2010  0 
2000   02-15-2010  5 

Merci beaucoup!

Répondre

0

vous pouvez utiliser between and

select * from table1 where trandate between 'date1' and 'date2' 
3
SELECT accountnumber, 
     trandate, 
     Datediff(DAY, a.trandate, (SELECT TOP 1 trandate 
            FROM mytable b 
            WHERE b.trandate > a.trandate 
            ORDER BY trandate)) 
FROM mytable a 
ORDER BY trandate 
0

Hope this helps.

Select A.AccountNo, A.TranDate, B.TranDate as PreviousTranDate, A.TranDate - B.Trandate as NoOfDays 
from 
(Select AccountNo, TranDate, Row_Number() as RNO over (Partition by AccountNo order by TranDate)) as A, 
(Select AccountNo, TranDate, Row_Number() as RNO over (Partition by AccountNo order by TranDate)) as B 
Where A.AccountNo = B.AccountNo and A.RNO -1 = B.RNO 

Vous pouvez également utiliser une expression CTE pour augmenter la préformance.