【问题标题】:Retrieving values into different columns将值检索到不同的列中
【发布时间】:2021-11-03 22:46:44
【问题描述】:

我有一个看起来像这样的表(但有数千行)

我想知道,是否有办法检索我的数据,使其看起来像这样(一个 SessionId 可能有超过 3 个时间戳)

注意:我不在乎我的答案使用的是哪个版本的 SQL。

【问题讨论】:

  • 你怎么不关心使用哪个版本的SQL?你不打算用答案吗?!?

标签: sql pivot-table


【解决方案1】:

在 Postgres 中,您可以将时间戳聚合到一个数组中:

select sessionid, 
       class,
       starttime,
       timestamps[1] as timestamp_1,
       timestamps[2] as timestamp_2,
       timestamps[3] as timestamp_3,
       timestamps[4] as timestamp_4
from (        
    select sessionid, 
           class,
           starttime, 
           array_agg(timestamp order by timestamp) as timestamps
    from the_table
    group by sessionid, class, starttime
) t

SQL 中的列数不能是动态的。解析查询时,数据库引擎必须知道所有列的数量、类型和名称。它在运行时无法更改。

【讨论】:

    猜你喜欢
    • 2015-02-13
    • 2019-09-03
    • 2012-11-26
    • 1970-01-01
    • 2023-04-05
    • 2020-02-13
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多