2010-10-11 80 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表達式來提高性能。