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

不使用PIVOT关键字实现单表行转列的SQL查询方法

不使用PIVOT实现SQL行转列

输入表(假设表名为 policy_data)

Policynameamounttype
PN1100P1
PN2200P2
PN3300P3
PN4400P1
PN1500P2

期望输出

PolicynameP1P2P3
PN1100500
PN2200
PN3300
PN4400

可以通过CASE表达式配合聚合函数+分组实现行转列,无需依赖PIVOT关键字,适配多数SQL方言:

SELECT 
    Policyname,
    MAX(CASE WHEN type = 'P1' THEN amount END) AS P1,
    MAX(CASE WHEN type = 'P2' THEN amount END) AS P2,
    MAX(CASE WHEN type = 'P3' THEN amount END) AS P3
FROM policy_data
GROUP BY Policyname
ORDER BY Policyname;

逻辑说明

  1. 以Policyname分组,把同一保单的所有数据聚合到一行
  2. 对每个目标列(P1/P2/P3),用CASE表达式判断当前行的type是否匹配:匹配时取对应amount,不匹配则返回NULL
  3. 用聚合函数(这里用MAX)过滤NULL值,保留每个分组下对应type的有效金额
    • 如果同一保单+type存在多条记录,可替换为SUM实现求和、MIN取最小值,按需调整聚合函数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:27:13