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

如何拆分非常规表结构记录并复制对应批次数据?

解决方案:用SQL拆分并复制批次数据

这表结构确实有点反常规,但咱们可以通过CTE(公共表表达式)加关联查询的方式实现你要的结果。下面是针对你的需求写的SQL代码,兼容大多数现代关系型数据库(比如SQL Server、MySQL 8.0+、PostgreSQL等):

WITH ItemBatch AS (
    -- 提取所有ItemID记录,记录每个Item所属的批次和SN号
    SELECT 
        BatchId,
        Details AS ItemSN,
        Heading,
        Details,
        Issue1,
        Issue2,
        Issue3,
        Comments
    FROM OddTable
    WHERE Heading = 'ItemID'
),
BatchMetadata AS (
    -- 提取每个批次的公共元数据(非ItemID的行)
    SELECT 
        BatchId,
        Heading,
        Details,
        Issue1,
        Issue2,
        Issue3,
        Comments
    FROM OddTable
    WHERE Heading != 'ItemID'
)
-- 合并Item记录和对应的批次元数据,并按要求排序
SELECT 
    Heading,
    Details,
    Issue1,
    Issue2,
    Issue3,
    Comments
FROM (
    -- 第一部分:保留原始的ItemID行
    SELECT 
        ItemSN,
        Heading,
        Details,
        Issue1,
        Issue2,
        Issue3,
        Comments,
        1 AS SortOrder  -- 让ItemID行排在最前面
    FROM ItemBatch

    UNION ALL

    -- 第二部分:把每个批次的元数据和该批次下的所有Item关联
    SELECT 
        ib.ItemSN,
        bm.Heading,
        bm.Details,
        bm.Issue1,
        bm.Issue2,
        bm.Issue3,
        bm.Comments,
        -- 给不同类型的元数据行指定排序优先级,保证顺序符合要求
        CASE bm.Heading
            WHEN 'Date Done' THEN 2
            WHEN 'Section1' THEN 3
            WHEN 'AreaA' THEN 4
            WHEN 'AreaB' THEN 5
            ELSE 6  -- 兜底,防止出现未定义的Heading
        END AS SortOrder
    FROM BatchMetadata bm
    JOIN ItemBatch ib ON bm.BatchId = ib.BatchId
) CombinedData
-- 先按Item的SN分组,再按SortOrder排序,保证每个Item的行连续且顺序正确
ORDER BY ItemSN, SortOrder;

代码逻辑说明

  1. ItemBatch CTE:专门筛选出所有Heading = 'ItemID'的行,同时记录每个Item对应的BatchId和SN号(ItemSN),这是后续复制元数据的核心关联依据。
  2. BatchMetadata CTE:筛选出所有非ItemID的行,也就是每个批次的公共数据(比如完成日期、各区域的问题记录等)。
  3. 合并与排序:
    • 先用UNION ALL把原始的Item行和关联后的批次元数据行合并;
    • 通过SortOrder字段控制每行的顺序:ItemID行排第一,然后依次是Date Done、Section1、AreaA、AreaB;
    • 最后按ItemSN排序,确保同一个Item的所有行连续排列。

如果你的数据库不支持CTE(比如MySQL 5.x),可以把CTE替换成子查询,逻辑是完全一样的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:59:56