Sql server 在SQL Server中查询“对应票据每次支付后的余额金额”
如上图所示,每张账单的付款在不同的日期分期支付。每次支付部分账单时,如何查找剩余账单金额 我使用了以下查询:Sql server 在SQL Server中查询“对应票据每次支付后的余额金额”,sql-server,Sql Server,如上图所示,每张账单的付款在不同的日期分期支付。每次支付部分账单时,如何查找剩余账单金额 我使用了以下查询: PaymentID SupplyInvoiceID Date TotalBill BillPaidAmount Remaining Bill 1 1 05-04-2018 2,10,000 20,000 1,90,000 2 1 10-0
PaymentID SupplyInvoiceID Date TotalBill BillPaidAmount Remaining Bill
1 1 05-04-2018 2,10,000 20,000 1,90,000
2 1 10-05-2018 2,10,000 60,000 1,30,000
3 1 13-06-2018 2,10,000 1,30,000 0
4 2 10-05-2018 80,000 40,000 40,000
5 2 13-06-2018 80,000 20,000 20,000
6 2 13-06-2018 80,000 20,000 0
但它只适用于第一个SupplyInvoiceID的账单付款。当我输入SupplyInvoiceID的第二次和以后的账单付款时,我得到了如下错误结果:
SELECT siph.SupplyPaymentID,si.SupplyInvoiceID,
siph.DateOfPayment,si.TotalBill, siph.BillPaidAmount,
si.TotalBill - SUM(siph.BillPaidAmount) over(order by siph.SupplyPaymentID asc) as RemainingBillAmount,
siph.PaymentMode
from SupplyInvoicePaymentHistory siph inner join
SupplyInvoice si
on siph.SupplyInvoiceID = si.SupplyInvoiceID
…请帮助查找上述问题第一段中所列的正确结果。您需要将PARTITION BY子句添加到您的sum over中,使其成为每个发票ID的累积总和
将此添加到您的RemainingBillAmount列:
整个查询:
... - SUM(...) over (partition by si.SupplyInvoiceID ...)
非常感谢亲爱的,我得到了要求的结果。
... - SUM(...) over (partition by si.SupplyInvoiceID ...)
SELECT siph.SupplyPaymentID,si.SupplyInvoiceID,
siph.DateOfPayment,si.TotalBill, siph.BillPaidAmount,
si.TotalBill - SUM(siph.BillPaidAmount) over(partition by si.SupplyInvoiceID order by siph.SupplyPaymentID asc) as RemainingBillAmount,
siph.PaymentMode
from SupplyInvoicePaymentHistory siph inner join
SupplyInvoice si
on siph.SupplyInvoiceID = si.SupplyInvoiceID