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

如何在SQL中按ID分组,将Type为wo的Case#同步至同ID所有行的wo Case#列

SQL查询实现:为同一ID新增对应Type为wo的Case#列

需求说明

现有表TableA,包含ID、Type、Case#列,原表数据如下:

原表数据(TableA)

IDTypeCase#
101wo23
101tsk12
101tsk13
101tsk14
101tsk15
642wo500
642tsk34
642tsk35
642tsk36
642tsk37

需要新增wo Case#列,同一ID的所有行该列均取该ID下Type为wo的Case#值,期望结果如下:

期望查询结果

IDTypeCase#wo Case#
101wo2323
101tsk1223
101tsk1323
101tsk1423
101tsk1523
642wo500500
642tsk34500
642tsk35500
642tsk36500
642tsk37500

解决方案

方法1:窗口函数(推荐,适用于MySQL 8+、PostgreSQL、SQL Server等)

利用MAX()窗口函数按ID分组,提取对应Type='wo'的Case#值,对同一ID的所有行填充该值:

SELECT
    ID,
    Type,
    `Case#`,
    MAX(CASE WHEN Type = 'wo' THEN `Case#` END) OVER (PARTITION BY ID) AS `wo Case#`
FROM TableA;

方法2:子查询关联

先查询每个ID对应的wo类型Case#,再与原表关联匹配:

SELECT
    a.ID,
    a.Type,
    a.`Case#`,
    wo.`Case#` AS `wo Case#`
FROM TableA a
JOIN (
    SELECT ID, `Case#`
    FROM TableA
    WHERE Type = 'wo'
) wo ON a.ID = wo.ID;

方法3:自连接

将原表与自身按ID关联,筛选Type='wo'的记录匹配赋值:

SELECT
    a.ID,
    a.Type,
    a.`Case#`,
    b.`Case#` AS `wo Case#`
FROM TableA a
LEFT JOIN TableA b ON a.ID = b.ID AND b.Type = 'wo';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:53:13