2

SQlServerを使用して請求書のエージング日数を計算したい。請求書が決済されたら、その年齢を計算します。

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テーブルにあります。

この再帰的なタスクを実行する方法がわかりませんでした...bill#を選択し、借方の金額がクレジットの合計よりも大きくなるまですべてのクレジットを合計します。そのクレジット取引の日付を使用して、借方請求日とこの請求が決済される日との差を計算します。

どんな助けでもかなりあります。前もって感謝します。

4

1 に答える 1

1

再帰的なものを探しています。これは、以前のすべてのトランザクションを考慮してそれらを集約し、現在の行と比較します。各行の現在の日付の残高を計算して、テーブルをそれ自体に選択的に結合する必要があります。再帰CTEを使用することも、T-SQLOVER句を使用することもできます。http ://msdn.microsoft.com/en-us/library/ms189461.aspxを参照してください。

于 2013-02-15T17:52:24.790 に答える