sql - 如何将单列转置为单行行

标签 sql postgresql

我似乎找不到一个像样的例子,但假设我有一个如下所示的结果表......

result

100
200
400

假设行数始终相同(在本例中为 n=3),现在我想转置它并能够根据需要为每一列命名...

result1   result2   result3

100       200       400

我查看了 pivot 函数,但我似乎无法让它工作...

select * from total_results pivot(result for result in (result1, result2, result3))

但是这给我错误。我怎样才能完成我想要的,我似乎找不到一个我可以理解的简单示例,因为 pivot 被证明很难使用。

最佳答案

你想要 row_number() 条件聚合:

select max(case when seq = 1 then result end) as result1,
       max(case when seq = 2 then result end) as result2,
       max(case when seq = 3 then result end) as result3
from (select t.*,
             row_number() over (order by result) as seq
      from table t
     ) t;

关于sql - 如何将单列转置为单行行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54830104/

相关文章:

sql - 通过 psql 和 PuTTY 连接到 Postgres 时出现自动递增错误

python 安全 SQL 查询

SQL Server - 具有 2 个组变量和 2 个聚合计算的动态透视

mysql - 仅将匹配的数据从 CSV 导入到 MySQL

c# - SQL表中行的增量值

postgresql - 在 jsonb postgres 中更新时间戳

sql - 从客户事件、SQL 中查找放弃的搜索

sql - 在 PostgreSQL 中实现多对多关系的最佳方式是什么?

c++ - "delete from table"不删除表?

php - PDO 不在表中插入多行