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

无唯一标识符的两张数据表关联获取case_id对应hierarchy_level咨询

关联逻辑实现方案

问题根源

之前关联返回多值、随机匹配的核心原因是:表2中同一个(Family_Number, Family_Description)组合对应多条Hierarchy_Level记录,没有额外匹配规则的情况下,数据库无法判断该返回哪条记录,自然无法得到每个case_id对应的唯一层级。

解决方案

需要先明确业务端的层级匹配规则,再通过前置过滤/窗口函数的方式先把表2处理为每个产品族组合对应唯一一条记录,再和表1关联即可:

场景1:明确需要取固定规则的层级

如果业务规则是取产品族对应最小/最大层级,或者取GoG_Description和Family_Description前缀匹配的层级,可以用窗口函数对表2分组排序后取首条关联:

-- 先对表2按产品族分组,按规则排序后给每条记录打序号
WITH table2_ranked AS (
    SELECT 
        *,
        ROW_NUMBER() OVER (
            PARTITION BY Family_Number, Family_Description 
            -- 可按业务需求修改排序规则:
            -- 取最小层级:ORDER BY Hierarchy_Level ASC
            -- 取最大层级:ORDER BY Hierarchy_Level DESC
            -- 取GoG_Description和Family_Description前缀匹配的优先:ORDER BY CASE WHEN Family_Description LIKE CONCAT(GoG_Description, '%') THEN 1 ELSE 2 END ASC
        ) AS rn
    FROM Table2
)
-- 关联时仅取排序后的第一条,保证每个case_id对应唯一层级
SELECT 
    t1.case_id,
    t1.Family_Number,
    t1.Family_Description,
    t2.Hierarchy_Level
FROM Table1 t1
LEFT JOIN table2_ranked t2
    ON t1.Family_Number = t2.Family_Number
    AND t1.Family_Description = t2.Family_Description
    AND t2.rn = 1;

场景2:业务要求每个产品族仅对应一个层级

如果规则上同个产品族不能有多个层级,需要先清洗表2的脏数据,先对表2做聚合确认每个产品族的唯一合法层级,再和表1关联:

WITH table2_dedup AS (
    SELECT 
        Family_Number,
        Family_Description,
        -- 按业务要求聚合出唯一层级,比如取众数、取最新录入的等
        MAX(Hierarchy_Level) AS unique_hierarchy_level
    FROM Table2
    GROUP BY Family_Number, Family_Description
)
SELECT 
    t1.case_id,
    t1.Family_Number,
    t1.Family_Description,
    t2.unique_hierarchy_level
FROM Table1 t1
LEFT JOIN table2_dedup t2
    ON t1.Family_Number = t2.Family_Number
    AND t1.Family_Description = t2.Family_Description;

空值说明

如果关联后出现Hierarchy_Level为空,是因为表1中的产品族组合(比如示例里的FOAF、FAD6)在表2中没有对应的匹配记录,需要先补全表2的产品族数据,或者在关联时给空值设置默认值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:06:02