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

如何基于Table2序列为Table1每条CRSE_ID记录关联对应ITEM_TYPE

解决Table1与Table2的映射需求

先明确我们的数据源和目标要求:

原始数据表

Table1(课程信息表)

SETIDCRSE_IDCOMPONENTCAMPUS
A10001LABC1
A10002LECC1
A10003LABC1
A10004LABC1

Table2(物品信息表)

SETIDITEMTYPEDESCRCAMPUS
A300000220010BookC1C1
A300000220020BookC2C2
A300000220030BookC1C1
A300000220040BookC2C2
A300000220050BookC1C1
A300000220060BookC2C2
A300000220070BookC1C1

需求拆解

  • 将Table2中的ITEM(推测你说的ITEM_TYPE是笔误,对应Table2的ITEM字段)映射到Table1的每一行,每个CRSE_ID对应递增序列的ITEM
  • 限定Table1中CAMPUS为C1的行,必须匹配Table2中以奇数结尾且CAMPUS为C1的ITEM

实现方案(以SQL为例)

我们可以通过给两个表分别生成排序后的行号,再通过行号关联来完成映射:

WITH ranked_courses AS (
    -- 给Table1的C1课程按CRSE_ID排序生成行号
    SELECT 
        SETID,
        CRSE_ID,
        COMPONENT,
        CAMPUS,
        ROW_NUMBER() OVER (ORDER BY CRSE_ID) AS course_rank
    FROM Table1
    WHERE CAMPUS = 'C1'
),
ranked_items AS (
    -- 筛选Table2中C1且以奇数结尾的ITEM,按ITEM排序生成行号
    SELECT 
        SETID,
        ITEM,
        CAMPUS,
        ROW_NUMBER() OVER (ORDER BY ITEM) AS item_rank
    FROM Table2
    WHERE CAMPUS = 'C1' 
      AND RIGHT(ITEM, 1) % 2 = 1 -- 确保ITEM以奇数结尾,这里Table2的C1数据天然符合,可根据实际情况保留
)
-- 通过行号关联完成映射
SELECT 
    rc.SETID,
    rc.CRSE_ID,
    rc.COMPONENT,
    rc.CAMPUS,
    ri.ITEM AS MAPPED_ITEM
FROM ranked_courses rc
JOIN ranked_items ri 
  ON rc.course_rank = ri.item_rank 
  AND rc.SETID = ri.SETID;

最终映射结果

SETIDCRSE_IDCOMPONENTCAMPUSMAPPED_ITEM
A10001LABC1300000220010
A10002LECC1300000220030
A10003LABC1300000220050
A10004LABC1300000220070

补充说明

  • 若Table2中存在C1但不以奇数结尾的ITEM,ranked_items中的RIGHT(ITEM, 1) % 2 = 1条件会自动过滤这些数据
  • 映射的递增顺序由CRSE_ID和ITEM的排序规则决定,可根据需求调整ORDER BY后的字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:47:57