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

Oracle中UNPIVOT与PIVOT使用报错:需将hour_key置于行中求助

问题分析与SQL修正

原SQL的错误点

  • UNPIVOT子句中重复使用hour_key作为目标列和透视列,且与子查询中的hour_key字段重名,直接引发标识符冲突报错。
  • 你的需求是将hour_key作为行维度,同时把不同天数的指标值转为列(hand_48、hand_24),但原SQL错误地使用了UNPIVOT——实际上hour_key已经是行级数据,不需要做列转行操作,直接做行转列的PIVOT即可。

修正后的SQL代码

SELECT cell_name,
       hour_key,
       hand_48,
       hand_24
FROM (SELECT cell_name,
             hour_key,
             handover_preparation_rate_eucell_eric_,
             TRUNC(sysdate) - TO_DATE(date_key, 'yyyymmdd') AS days
        FROM edw.fct_prse4g_cell_kpi_h
       WHERE province = 'KJ'
         AND date_key BETWEEN TO_CHAR(sysdate - 2, 'yyyymmdd') AND
             TO_CHAR(sysdate - 1, 'yyyymmdd')
         AND hour_key BETWEEN 0 AND 8)
PIVOT(
      SUM(handover_preparation_rate_eucell_eric_)
      FOR days IN(2 AS hand_48, 1 AS hand_24)
     ) pvt1
ORDER BY hour_key;

修正说明

  • 移除了多余的UNPIVOT操作,保留hour_key作为行维度字段。
  • 明确指定返回列,避免冗余字段干扰结果展示。
  • 添加ORDER BY hour_key,让结果按小时顺序排列,更贴合预期的展示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:17:14