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