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

PostgreSQL:如何将多行同标识数据合并为单行多列

解决方案

可以通过分组聚合实现这个需求,利用PostgreSQL聚合函数忽略NULL值的特性,结合GROUP BY将同一id和name的多行数据合并为单行:

SELECT 
    id,
    name,
    MAX(amount1) AS amount1,
    MAX(amount2) AS amount2,
    MAX(amount3) AS amount3
FROM 
    your_table_name
GROUP BY 
    id, name;

原理说明

  • GROUP BY id, name:将所有id和name完全相同的行归为一组
  • MAX(amountX):每个分组内的amountX列只有一个非NULL有效值,聚合函数MAX会自动忽略NULL,提取出该列的有效数值
  • 如果是其他类似场景(比如需要求和、取平均),可替换为对应的聚合函数(如SUM()、AVG()),但MAX()最适配当前需求

示例验证

假设你的表数据如下:

idnameamount1amount2amount3
1abc10nullnull
1abcnull5null
1abcnullnull40
2aaa90nullnull
2aaanull20null
2aaanullnull10

执行上述SQL后,会得到你期望的结果:

idnameamount1amount2amount3
1abc10540
2aaa902010

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:47:49