我需要一个查询来获取未结发票和逾期(如果有的话)。
我有一张名为" Invoices"有了这个基本结构:
InvoiceNo CustID InvoiceDate Amount DueDate Credit
1 1 01/04/2015 120.00 01/31/2015
2 2 01/13/2015 72.00 01/20/2015
3 1 01/12/2015 63.00 TRUE
4 2 02/18/2015 43.00 02/10/2015
5 2 02/24/2015 16.00 TRUE
名为" Payments"的表格反映客户付款:
PaymentNo CustID PaymentDate Amount Refund
我还有一个"开放平衡"每个客户的价值
我需要能够查看具有余额<>的客户的查询结果这样的事情:
CustID Balance Amount Overdue Days Overdue
我使用此查询来显示未结发票,它运作正常,但我已经陷入了逾期交易。
Select Customers.CustID
, Customers.DisplayName As 'Name'
, COALESCE(Customers.OpeningBalance,0)
+(( Select COALESCE(Sum(Invoices.Amount),0) From Invoices Where Credit = 0 And Invoices.CustID = Customers.CustID )
+( Select COALESCE(Sum(Payments.Amount),0) From Payments Where Refund = 1 And Payments.CustID = Customers.CustID ) )
-(( Select COALESCE(Sum(Invoices.Amount),0) From Invoices Where Credit = 1 And Invoices.CustID = Customers.CustID )
+( Select COALESCE(Sum(Payments.Amount),0) From Payments Where Refund = 0 And Payments.CustID = Customers.CustID )) as Balance
From Customers
Where Exists ( Select * From Invoices
Where Invoices.CustID = Customers.CustID )
@Zajonc 逾期余额根据发票金额和相对于其日期的付款金额计算。
方案:
假设客户的发票#1的截止日期为2015年1月15日,金额为140.00
假设该客户在2015年1月20日支付了40.00
逾期的日子是今天和截止日期之间的日子。
到期日余额为140.00 - 40.00 = 100.00。
这仅适用于一张发票和一笔付款交易,但由于现实情况稍微复杂一些,因此计算应反映两天的累积和余额的过期。我:
假设我们在2015年2月15日执行查询,并在客户上提供以下数据:
Invoice # Amount Due Date
1 140.00 01/15/2015
2 360.00 02/08/2015
Payment # Amount Payment Date
1 40.00 01/20/2015
2 100.00 02/18/2015
逾期的日子是:
(2015年2月15日至2015年1月15日期间经过的天数)
+
(2015年2月15日至2015年8月2日之间的天数)
= 31 + 7 = 38天。
逾期余额为100.00(客户在查询日期后3天付款)+ 360.00 = 460.00
我希望它澄清 感谢。