2010-10-11 4 views
2

Можете ли вы показать, как это можно сделать в t-sql?t-sql - вычислить разницу между датами для каждой строки

выборочные записи

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

Как вычислить количество дней между каждой операцией для каждого ACCOUNTNUMBER?

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 

Большое спасибо!

ответ

0

вы можете использовать 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

Надеется, что это помогает.

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 

Вы также можете использовать выражение CTE для увеличения предварительной производительности.

Смежные вопросы