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

移除Union结果集中的部分重复账单数据

解决账单重复数据保留指定来源记录的SQL方案

可行SQL代码

WITH RankedBills AS (
    SELECT 
        REF,
        CUSTOMER,
        NETT_PRICE,
        DATE_CREATED,
        PART_NO,
        SALESORDER,
        PROJECT,
        -- 按重复规则分组,AC来源记录优先排序
        ROW_NUMBER() OVER (
            PARTITION BY NETT_PRICE, PROJECT, DATE_CREATED
            ORDER BY CASE WHEN REF = 'AC' THEN 0 ELSE 1 END
        ) AS RowNum
    FROM 你的合并表名 -- 替换为实际表名
)
SELECT 
    REF,
    CUSTOMER,
    NETT_PRICE,
    DATE_CREATED,
    PART_NO,
    SALESORDER,
    PROJECT
FROM RankedBills
WHERE RowNum = 1;

方案逻辑说明

  1. 分组排序:通过ROW_NUMBER()函数,以NETT_PRICE、PROJECT、DATE_CREATED为分组依据,给每组内的记录编号。利用CASE WHEN让REF='AC'的记录排在最前面,行号标记为1;同一组内的FP记录行号为2。
  2. 筛选保留:外层查询仅保留行号为1的记录,自动保留AC来源的重复记录;若组内无AC记录,则保留唯一的FP记录,完全匹配你的需求。

你原有代码的问题

  • 无法在WHERE子句中直接使用ROW_NUMBER()函数,必须先在子查询/CTE中计算行号后再筛选。
  • 分区键错误,没有按照你定义的重复规则(NETT_PRICE、PROJECT、DATE_CREATED)分组。
  • 排序规则未优先指定AC来源,导致无法确保AC记录被保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:27:38