【问题标题】:Finding aging of customer invoice in a ledger. No posting of credit against invoice number在分类帐中查找客户发票的帐龄。不根据发票编号过帐贷方
【发布时间】:2013-01-05 13:23:45
【问题描述】:

我想使用 SQl Server 计算帐单帐龄天数。当账单被清算时,计算它的年龄。

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 表中有这个分类帐表。

我无法弄清楚如何执行此递归任务...选择账单# 并汇总所有贷方,直到借方金额大于贷方总和。使用该贷记交易的日期,计算借记帐单日期与该帐单清算时间之间的天数差。

任何帮助都将不胜感激。提前致谢。

【问题讨论】:

  • 您能否澄清“期初余额于 1 月 27 日结清;因此,发票期限为 27 天”部分?列出的表结构是典型的,它会出现记录日期与年龄字段...?

标签: c# sql sql-server


【解决方案1】:

您正在寻找递归的东西 - 它考虑所有以前的交易并将它们聚合起来,将它们与当前行进行比较。您需要有选择地将表连接到自身,计算每行截至当前日期的余额。您可以使用递归 CTE,也可以使用 T-SQL OVER 子句 - 请参阅 http://msdn.microsoft.com/en-us/library/ms189461.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多