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

迁移新ERP时筛选18个月无活动供应商账户的查询条件设置问题

问题结论

你现有查询逻辑存在漏洞,必须新增校验规则确认目标供应商不存在2020年5月及之后的已过账发票交易,否则会筛出不符合要求的供应商。


现有查询的核心问题

你当前用左连接加where 已过账发票日期 < '2020-05-01'的逻辑有两个明显错误:

  • 若某供应商同时存在2020年5月前、后的发票记录,现有条件只会过滤出该供应商符合日期要求的历史记录,最终仍会把该供应商纳入结果清单,完全不符合「18个月无交易」的清理规则
  • 从未产生过任何交易的供应商,左连接后付款历史表的所有字段为NULL,无法满足日期 < '2020-05-01'的条件,会被直接排除出结果,而这类供应商本就属于可清理的范围

正确实现方案

推荐两种可直接落地的写法,任选其一即可:

方案1:用NOT EXISTS校验(性能更优,适配大表场景)

SELECT vm.* 
FROM Vendor_Master vm
WHERE NOT EXISTS (
    SELECT 1 
    FROM Posted_Invoice_Payments_History piph
    WHERE piph.vendor_id = vm.vendor_id
    AND piph.posted_invoice_date >= '2020-05-01'
)

该逻辑会直接排除所有存在2020年5月及之后交易的供应商,同时自动保留从未有过交易的供应商。

方案2:用分组聚合判断最大交易日期

SELECT vm.vendor_id, vm.vendor_name, MAX(piph.posted_invoice_date) last_trade_date
FROM Vendor_Master vm
LEFT JOIN Posted_Invoice_Payments_History piph 
    ON vm.vendor_id = piph.vendor_id
GROUP BY vm.vendor_id, vm.vendor_name
HAVING MAX(piph.posted_invoice_date) < '2020-05-01' 
    OR MAX(piph.posted_invoice_date) IS NULL

该逻辑通过统计每个供应商的最晚交易日期,明确筛选出最晚交易早于2020年5月、或者无任何交易记录的供应商。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:15:07