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

SQL分组并将非分组行转为列的实现方案求助

SQL行转列实现方案

原数据

AreaIdAreaNameModule
1AAASquare
2AAACircle
3BBBSquare
4CCCSquare
5CCCCircle
6DDDCircle

目标格式

AreaNameSquareAreaCircleArea
AAA12
BBB3Null
CCC45
DDDNull6

解决方案SQL

使用CASE WHEN结合分组聚合即可实现需求,无需DISTINCT:

SELECT 
    AreaName,
    MAX(CASE WHEN Module = 'Square' THEN AreaId END) AS SquareArea,
    MAX(CASE WHEN Module = 'Circle' THEN AreaId END) AS CircleArea
FROM 
    你的表名 -- 替换成实际表名
GROUP BY 
    AreaName;

逻辑说明

  • CASE WHEN根据Module的值匹配提取对应的AreaId,不匹配的会返回NULL
  • MAX()聚合函数配合GROUP BY AreaName,将同一个AreaName的多条记录合并为一行,自动保留对应Module的AreaId值,无对应值的则显示NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:30:59