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

基于GroupID分组的多列匹配SQL查询问题求解

原有SQL逻辑问题

之前编写的SQL存在核心逻辑偏差:仅校验了单条记录内的两个零件字段是否匹配目标产品BOM,没有实现业务要求的「按GroupID分组后,组内所有去重零件全部命中BOM才判定匹配」的规则,缺少分组维度的全量零件校验,因此无法得到预期结果。

实现思路
  • 第一步:提前提取指定查询产品的全量BOM零件,作为匹配基准集合
  • 第二步:遍历机器零件关联表的所有记录,标记每条记录中两个零件字段是否属于BOM集合
  • 第三步:按Machine+GroupID维度分组,统计组内存在不匹配零件的记录数
  • 第四步:筛选组内无不匹配零件的分组,返回去重后的机器及对应GroupID结果
可直接使用的SQL代码(适配SQL Server语法,和原有表字段写法一致)
WITH TargetProductParts AS (
    -- 提取查询产品的全部BOM零件,替换WHERE后的产品名即可查询其他产品适配结果
    SELECT Part
    FROM [Table 2]
    WHERE Product = 'Prod A'
),
GroupMatchCheck AS (
    SELECT
        Machine,
        GroupID,
        SUM(
            CASE 
                WHEN EXISTS (SELECT 1 FROM TargetProductParts WHERE Part = t.[Part Group 1])
                 AND EXISTS (SELECT 1 FROM TargetProductParts WHERE Part = t.[Part Group 2])
                THEN 0 ELSE 1 
            END
        ) AS unmatch_part_count
    FROM [Table 1] t
    GROUP BY Machine, GroupID
)
SELECT DISTINCT Machine, GroupID
FROM GroupMatchCheck
WHERE unmatch_part_count = 0
结果校验说明

执行上述SQL查询Prod A时,仅Mach B对应的GroupID=2分组下所有零件均在Prod A的BOM清单中,unmatch_part_count统计值为0,会作为结果返回;其余分组只要存在任意零件不在BOM清单中,就会被过滤,完全匹配预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:06:23