You need to enable JavaScript to run this app. SQL Server查询如何避免相同SupplyInvoiceID的TotalBill列重复输出
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server查询如何避免相同SupplyInvoiceID的TotalBill列重复输出

解决方案

你可以通过窗口函数标记同一SupplyInvoiceID下的首行记录,仅在首行返回TotalBill值即可实现需求,修改后的查询语句如下:

SELECT 
   si.SupplyInvoiceID,
   si.CompanyID,
   -- 仅同一发票下的第一条付款记录显示总账单金额,其余行返回空
   CASE 
      WHEN ROW_NUMBER() OVER(PARTITION BY si.SupplyInvoiceID ORDER BY siph.SupplyPaymentID ASC) = 1 
      THEN si.TotalBill 
      ELSE NULL 
   END AS TotalBill,
   siph.BillPaidAmount,
   si.TotalBill - SUM(siph.BillPaidAmount) 
   over( partition by si.SupplyInvoiceID order by siph.SupplyPaymentID  asc) as RemainingBillAmount
from
   SupplyInvoicePaymentHistory siph 
   left join
      SupplyInvoice si 
      on siph.SupplyInvoiceID = si.SupplyInvoiceID 

如果需要数值为空时显示空白而非NULL,可以将TotalBill转为字符串类型后修改ELSE分支返回空字符串:

CASE 
   WHEN ROW_NUMBER() OVER(PARTITION BY si.SupplyInvoiceID ORDER BY siph.SupplyPaymentID ASC) = 1 
   THEN CAST(si.TotalBill AS VARCHAR(50))
   ELSE '' 
END AS TotalBill

内容的提问来源于stack exchange,提问作者shakeel ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 15:57:03