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

Oracle SQL Developer中保留ID的表转置失败求助

Oracle SQL行转列(PIVOT)解决方案

问题原因分析

你的代码无法运行是因为几个Oracle语法细节错误:

  • Oracle中表别名不能使用AS关键字,列别名可以用,但表别名直接写在表名后即可;
  • PIVOT的IN子句里,必须为每个转置后的列指定明确别名,否则生成的列名会是带单引号的字符串(如'nom'),不符合你要的结构;
  • 建议明确指定分组逻辑,让SQL可读性更强。

正确SQL代码

SELECT col1 AS col, nom, prenom, age
FROM your_table_name  -- 替换成你的实际表名
PIVOT (
    MAX(col3)
    FOR col2 IN (
        'nom' AS nom,
        'prenom' AS prenom,
        'age' AS age
    )
);

代码说明

  1. 移除表别名的AS:遵循Oracle语法规范,表别名直接跟在表名后;
  2. IN子句指定列别名:通过'nom' AS nom的写法,将转置后的列名设置为不带引号的nom,匹配你需要的输出结构;
  3. 聚合函数选择:因为每个Personne+col2的组合只有唯一值,用MAX()或MIN()效果完全一致,且你的age是字符串类型,无需做类型转换,直接使用即可;
  4. 分组逻辑:PIVOT会自动按非聚合列(这里是col1)分组,将同一Personne对应的不同col2值转为列。

执行结果

运行后会得到你预期的转置表结构:

colnomprenomage
Personne1AurélieDupont25
Personne2StéphaneBlanc45

内容的提问来源于stack exchange,提问作者Ruser-lab9

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:41:22