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

在SQL查询中查找重复值:如何识别同供应商重复录入的发票

重复发票筛查解决方案

你之前用COUNT函数仅统计相同供应商ID、相同金额的记录总数,无法区分「同一供应商同金额的正常多笔发票」和「同一张发票重复录入生成不同发票号」的两类场景,核心判定逻辑需要补充同组内存在2个及以上不同发票号的条件。

SQL查询方案

假设发票表名为invoices,核心字段包括vendor_id(供应商ID)、invoice_no(发票号)、amount(发票金额)、vendor_name(供应商名称)

统计所有存在重复录入的供应商+金额分组

SELECT vendor_id, vendor_name, amount, COUNT(DISTINCT invoice_no) AS distinct_invoice_count
FROM invoices
GROUP BY vendor_id, vendor_name, amount
HAVING COUNT(DISTINCT invoice_no) > 1

执行后会直接返回你示例中的Johns Bakery这类存在重复录入的分组记录。

导出所有重复录入的明细发票

如果需要拉出所有对应的发票明细,使用关联子查询实现:

SELECT t1.*
FROM invoices t1
INNER JOIN (
    SELECT vendor_id, amount
    FROM invoices
    GROUP BY vendor_id, amount
    HAVING COUNT(DISTINCT invoice_no) > 1
) t2 ON t1.vendor_id = t2.vendor_id AND t1.amount = t2.amount
ORDER BY t1.vendor_id, t1.amount

Excel处理方案

如果数据存储在Excel表格中,按以下步骤操作:

  • 新增辅助列(假设为C列),合并供应商ID和金额字段,公式为=A2&B2(A列为供应商ID、B列为金额,可根据实际列号调整)
  • 新增第二列辅助列(假设为D列),统计同分组下不同发票号的数量,公式为=SUMPRODUCT(($C$2:$C$[你的数据最大行号]=C2)/COUNTIFS($E$2:$E$[你的数据最大行号],$E$2:$E$[你的数据最大行号],$C$2:$C$[你的数据最大行号],C2))(E列为发票号列)
  • 筛选D列数值大于1的所有行,即为需要排查的重复录入发票
    示例数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:45:01