首页 > 解决方案 > 如何使用 Postgres SQL 将行转换为列?

问题描述

我有以下结构中的数据 问题

期望的输出

https://imgur.com/a/855njBn][1]

标签: sqlpostgresqlpivotcrosstabpostgresql-9.4

解决方案


Postgres(从 9.4 开始)支持filter条件聚合的语法。所以我会推荐:

SELECT customer_id,
       MAX(value) FILTER (WHERE name = 'age') as age,
       MAX(value) FILTER (WHERE name = 'marketing_consent') as marketing_consent,
       MAX(value) FILTER (WHERE name = 'gender') as gender
FROM t
GROUP BY customer_id

推荐阅读