sql - 如何创建查询以将列中的分割作为结果中的列?

标签 sql postgresql

原始数据

________________
|col1 |col2|col3|
________________
|A    | X  | 1  |
________________
|A    | Y  |  5 |
________________
|B    | X  | 2  |
________________
|B    | Y  | 6  |
________________
|C    | Y  | 7  |
________________

期望的输出

_______________
|col1| X  | Y |
_______________
|A   | 1  | 5 |
_______________
|B   | 2  | 6 |
_______________
|C   |NULL| 7 |
_______________

最佳答案

您的示例的 crosstab() 查询如下所示:

SELECT col1
     , col2 AS "X"
     , col3 AS "Y"
FROM crosstab(
       'SELECT col1 , col2, col3
        FROM   table
        ORDER  BY 1'
       ,$$VALUES ('X'::text), ('Y')$$
 ) AS ct (
   col1 int
 , col2 numeric    -- use actual data type!
 , col3 numeric);

此相关答案中的解释和链接: PostgreSQL Crosstab Query

关于sql - 如何创建查询以将列中的分割作为结果中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42015802/

相关文章:

Sql 覆盖查询

ruby-on-rails - 查找所有在 18 岁之前购买汽车的用户

postgresql - 使用 SSH 堡垒将 dbt 连接到 Postgres

ruby-on-rails - Rails 3 上的 Postgres 复合类型

php - MySQl Error #1064 语法错误

sql - Hive:通过查找组中的最大值

php - 查询根据特定日期从数据库中选择数据并计算有多少行?

performance - 基准 : bigint vs int on PostgreSQL

postgresql - 如何将 WKT(众所周知的文本)格式的带孔多边形插入到 postgis 表中?

sql - 从另一个表中加入具有最大值的表