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

SQL表转置实现:无需crosstab将职位最高薪资转为列

解决方案:用条件聚合实现行转列

不用crosstab的话,最简洁直接的方式是用条件聚合,一步就能把行式结果转成列式:

SELECT
    MAX(CASE WHEN position = 'junior' THEN salary END) AS junior,
    MAX(CASE WHEN position = 'senior' THEN salary END) AS senior
FROM candidates;

逻辑说明

  • CASE语句会筛选出对应职位的薪资,非目标职位的行返回NULL
  • 外层的MAX()会自动忽略NULL,最终得到每个职位的最高薪资
  • 全程基于原表计算,不需要先执行分组查询再转置,比复杂的pivot写法更轻量

如果要基于你已经写好的分组查询结果来转置,也可以嵌套子查询:

SELECT
    MAX(CASE WHEN position = 'junior' THEN max_salary END) AS junior,
    MAX(CASE WHEN position = 'senior' THEN max_salary END) AS senior
FROM (
    SELECT position, MAX(salary) AS max_salary
    FROM candidates
    GROUP BY position
) AS grouped_data;

这个写法逻辑和上面一致,只是把你的分组查询作为子查询,适合需要复用已有分组逻辑的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:15:10