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

如何在SQL中对表分组实现行转列得到目标汇总表?

解决方案

你可以使用条件聚合实现行转列效果,该写法兼容MySQL、PostgreSQL、SQL Server等所有主流SQL数据库:

SELECT
    Task,
    MAX(CASE WHEN Type = 'type1' THEN Time_Taken END) AS type1_time,
    MAX(CASE WHEN Type = 'type2' THEN Time_Taken END) AS type2_time
FROM Tasks
GROUP BY Task
ORDER BY Task;

逻辑说明

  • 按照Task字段分组,每个任务对应一行结果
  • 通过CASE WHEN按类型筛选对应的耗时记录,因为每个任务每个类型仅有一条记录,使用MAX/MIN聚合函数即可提取对应的耗时值,无匹配记录时会返回NULL

如果你使用的是支持PIVOT语法的数据库(如SQL Server、Oracle),也可以用以下写法:

SELECT
    Task,
    [type1] AS type1_time,
    [type2] AS type2_time
FROM Tasks
PIVOT (
    MAX(Time_Taken)
    FOR Type IN ([type1], [type2])
) AS PivotTable
ORDER BY Task;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:06:01