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

PostgreSQL行合并问题:多行转宽表格式实现求助

解决行转列(Pivot)需求:将多行合并为单行

这是个非常常见的行转列场景,你已经找对了核心方向——按date和district分组,接下来只需要用条件聚合就能把不同type对应的area映射成单独的列,我给你具体实现方案:

核心实现代码(静态列)

假设你的type字段只有type1和type2两种固定取值,直接用CASE WHEN配合聚合函数即可:

SELECT
    date,
    -- 提取type1对应的area值
    MAX(CASE WHEN type = 'type1' THEN area END) AS type1_area,
    -- 提取type2对应的area值
    MAX(CASE WHEN type = 'type2' THEN area END) AS type2_area,
    district
FROM
    your_table_name -- 替换成你的实际表名
GROUP BY
    date, district
ORDER BY
    date, district;

关键细节说明

  • 为什么用MAX?因为分组后,每个date + district组合下,同一个type应该只会对应一条area记录(如果有重复,MAX会自动忽略NULL值,取有效的那个值)。如果你的area是数值类型,用SUM也能达到同样效果;如果是字符串类型,MAX/MIN都适用,只要每个分组下每个type唯一对应一个area就行。
  • 如果你的type取值不固定(比如可能新增type3、type4),那需要用动态SQL来生成列,但从你描述的输出格式来看,应该是固定的type1和type2,静态写法就足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:49:48