2013-01-05 64 views
2

我想使用SQl服務器計算賬單賬齡。清算賬單時,計算賬齡。在分類賬中查找客戶發票的賬齡。沒有過帳發票號碼

Date  Invoice# type age  Debit Credit Balance 
01/01    opening 27      8061 
01/01    Cr      2000  6961 
5/01    Cr      5000  1961 
5/1  5  Dr  30  3000    4961 
27/1    Cr      2000  2961 
5/2    Cr      2961  0 

期初餘額於1月27日結清;所以,發票年齡是27天。並且,發票#5在5/2上被清除;所以,它的年齡將是30天。我如何在SQL Server代碼中執行此操作?

我有一個SQL表中的這個Cledger表。

我無法弄清楚如何做這個遞歸任務...選擇賬單#和總和所有信用,直到借方金額大於信用額度。使用該信用交易的日期,計算借方帳單日期與清算該帳單時間之間的差額。

任何幫助將是可觀的。提前致謝。

+0

您能否澄清一下「1月27日結清的期初餘額,發票年齡是27天」的部分?列出的表格結構是典型的,其中會出現記錄的日期與年齡字段一致的日期...? – chrisb

回答

0

您正在尋找遞歸的東西 - 它認爲所有以前的交易&聚合它們,將它們與當前行進行比較。您需要選擇性地將表加入表中,並計算每行的當前日期餘額。您可以使用遞歸CTE,也可以使用T-SQL OVER子句 - 請參閱http://msdn.microsoft.com/en-us/library/ms189461.aspx