You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Inner Join去除重复TotalSale值,仅保留匹配组首行值?

同一单据组仅首行显示TotalSale的SQL解决方案

当前通过内连接关联SalesTable和PricesTable后,同一DocType+DocNumber组内的TotalSale会重复出现在每一行,要实现仅组内首行显示该值、其余行为空的效果,可以借助窗口函数ROW_NUMBER()来实现:

修改后的查询语句

SELECT ST.ProductID
    ,ST.DocType
    ,ST.DocNumber
    ,ST.UnitPrice
    ,CASE 
        WHEN ROW_NUMBER() OVER (PARTITION BY ST.DocType, ST.DocNumber ORDER BY ST.ProductID) = 1 
        THEN PT.TotalSale 
        ELSE NULL 
     END AS TotalSale
FROM SalesTable ST
INNER JOIN PricesTable PT
    ON ST.DocNumber = PT.DocNumber 
    AND ST.DocType = PT.DocType -- 补充DocType匹配,确保关联准确性

关键逻辑说明

  • PARTITION BY ST.DocType, ST.DocNumber:按单据类型和单据编号分组,确保同一组的行被归为一类
  • ORDER BY ST.ProductID:定义组内的排序规则,决定哪一行作为"首行"(可根据实际业务需求替换为其他字段,比如创建时间等)
  • CASE判断:当组内行编号为1时,显示TotalSale值,否则返回NULL

内容的提问来源于stack exchange,提问作者Roy Givenchi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:48:15