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

SQL实现Pivot table行转列:按职业分类输出人员名单问题排查

问题排查与修复方案

你的SQL逻辑本身的行转列思路是正确的,存在3处可调整的问题导致不符合预期/执行报错:

  • 多余输出了rank列:你的预期结果不需要展示排名字段,直接删掉SELECT子句中的rank即可
  • 内层子查询缺少别名:所有SQL规范都要求FROM后的子查询(派生表)必须指定别名,否则会直接触发语法错误
  • 保留字使用风险:rank是SQL官方保留关键字,用作字段别名在部分数据库中会报错,建议替换为rn等非保留字别名

修复后可直接运行的SQL

SELECT
  MAX(CASE WHEN Occupation='Doctor' THEN name ELSE NULL END) AS Doctor,
  MAX(CASE WHEN Occupation='Professor' THEN name ELSE NULL END) AS Professor,
  MAX(CASE WHEN Occupation='Singer' THEN name ELSE NULL END) AS Singer,
  MAX(CASE WHEN Occupation='Actor' THEN name ELSE NULL END) AS Actor
FROM
  (
    SELECT o1.Occupation,
           o1.name,
           (SELECT COUNT(*)
              FROM Occupations o2
             WHERE o1.Occupation = o2.Occupation
               AND o1.name > o2.name) AS rn
      FROM Occupations o1
  ) AS t
GROUP BY rn

修复后的语句执行结果和你给出的预期输出完全一致:各职业列按姓名升序排列,对应职业人数不足的行自动填充NULL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:12:02