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

SQL行转列需求:将任务成本数据转换为按地块展示的结构

SQL行转列解决方案:将Task字段转为列展示Cost数据

原表结构

PlotsTaskCost
Plot 1Lift 1230.00
Plot 1Lift 2300.00
Plot 2Lift 1400.00
Plot 2Lift 2345.00
Plot 3Lift 1445.78
Plot 3Lift 2555.00

目标表结构

PlotsLift 1Lift 2
Plot 1230.00300.00
Plot 2400.00345.00
Plot 3445.78555.00

解决方案

方法1:条件聚合(兼容多数数据库,如MySQL、PostgreSQL、SQL Server等)

这是通用度最高的方案,新手易理解。通过GROUP BY按Plots分组,结合CASE WHEN提取对应Task的Cost值:

SELECT
    Plots,
    MAX(CASE WHEN Task = 'Lift 1' THEN Cost END) AS `Lift 1`,
    MAX(CASE WHEN Task = 'Lift 2' THEN Cost END) AS `Lift 2`
FROM
    你的表名
GROUP BY
    Plots;

说明:

  • CASE WHEN匹配指定Task,返回对应Cost,非匹配项返回NULL
  • 用MAX()聚合NULL值(因每个Plots+Task组合唯一,MIN()也可),保留有效Cost
  • 替换你的表名为实际表名

方法2:PIVOT函数(适用于SQL Server、Oracle等支持该语法的数据库)

如果你的数据库支持PIVOT语法,可使用更简洁的写法:

SELECT
    Plots,
    [Lift 1],
    [Lift 2]
FROM
    你的表名
PIVOT
(
    MAX(Cost)
    FOR Task IN ([Lift 1], [Lift 2])
) AS PivotTable;

说明:

  • PIVOT指定聚合函数(这里用MAX,因分组唯一),将Task的取值转为列名
  • FOR Task IN中列出需要转为列的Task值
  • 替换你的表名为实际表名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:15:31