sql - PostgreSQL 选择查询 'join multiple rows to one row'

标签 sql postgresql

我是 PostgreSQL 的新手。我的情况是我有一个存储数据的表。数据作为一行来自文件,并作为 5 行保存在数据库中。我想要的是创建一个 SELECT 语句,它将 5 行再次合并为一个。

例如

id  id2  id3  year  code   value
4   1    1    1642  radio  30
4   1    1    1642  tv     56
4   1    1    1642  cable  67
4   1    1    1642  dine   70

我想要一个查询,它将返回以下内容:

id  id2  id3  year  radio  tv  cable dine
4   1    1    1642  30     56  67   70

代码的值正在变成具有实际值的列。

这可能吗?

最佳答案

你可以使用(SQL Fiddle):

SELECT m.id, m.id2, m.id3, m.year,
  SUM(CASE WHEN m.code = 'radio' THEN m.value END) as radio,
  SUM(CASE WHEN m.code = 'tv' THEN m.value END) as tv,
  SUM(CASE WHEN m.code = 'cable' THEN m.value END) as cable,
  SUM(CASE WHEN m.code = 'dine' THEN m.value END) as dine
FROM MyTable m
GROUP BY m.id, m.id2, m.id3, m.year

关于sql - PostgreSQL 选择查询 'join multiple rows to one row',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25787846/

相关文章:

database - 是否可以删除超过某个时间点的所有数据库更改?

sql - 将数据库结果扫描到嵌套的结构数组中

sql - 选择不同的行 "modulo null"

postgresql - 如何使用/打开 psql?

sql - 如何避免为准备好的语句的每一行启动触发器?

postgresql - Postgres 9.6 更新 jsonb 列以添加具有查询值的新属性

sql - 当现有索引包含新索引中的所有列时,为什么创建这个新索引会大大提高性能?

C# MySQL - "Update"正在选择每一行/所有内容

java - 作为 hibernate POJO 的 native SQL 结果

postgresql - 如果不存在则插入,否则在 postgresql 中返回 id