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

基于Presto SQL实现特定格式数据透视的技术咨询

解决方案

要实现你需要的透视效果,需要修正两个核心问题:一是你的CASE语句引用了错误字段(应该用Status而非title),二是必须配合聚合函数和分组来将同一功能的多行记录合并为一行。另外,要实现Feature_Area不重复显示,可以通过窗口函数标记行号来控制显示逻辑。

完整SQL代码

SELECT
  -- 仅在同一Feature_Area的第一行显示区域名称,其余行留空
  CASE WHEN rn = 1 THEN Feature_Area ELSE '' END AS Feature_Area,
  Feature,
  -- 透视生成各App列,用MAX提取对应状态
  MAX(CASE WHEN Product = 'App1' THEN Status END) AS App1,
  MAX(CASE WHEN Product = 'App2' THEN Status END) AS App2,
  MAX(CASE WHEN Product = 'App3' THEN Status END) AS App3
FROM (
  -- 给同一Feature_Area下的行添加编号
  SELECT
    Feature_Area,
    Feature,
    Product,
    Status,
    ROW_NUMBER() OVER (PARTITION BY Feature_Area ORDER BY Feature) AS rn
  FROM your_table_name -- 替换为你的实际表名
) t
GROUP BY Feature_Area, Feature, rn
ORDER BY Feature_Area, Feature;

代码说明

  1. 子查询添加行号:用ROW_NUMBER()窗口函数按Feature_Area分组、Feature排序,给每组内的行分配序号,用于控制Feature_Area的显示时机。
  2. 透视列生成:用MAX()聚合函数包裹CASE语句,因为同一Feature+Product组合只有一条状态记录,MAX会自动过滤NULL值,得到对应App的状态。
  3. 分组与排序:按Feature_Area、Feature和行号分组,确保每个功能单独一行,最后按区域和功能排序保证结果整洁。

执行结果

Feature_AreaFeatureApp1App2App3
User experienceSign UpGreenRedNULL
Log offGreenRedNULL
Back EndDelete UserNULLNULLRed
Update UserNULLNULLGreen

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:31:12