You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL如何按相同some-id分组将两行timestamp转为对应两列返回

这个需求完全可以通过SQL实现,根据场景不同有两种常用实现方案:

方案1:分组聚合(适用单个some-id固定只有2条时间记录的场景)

直接按some-id分组,用聚合函数取最小、最大时间对应两列即可:

SELECT 
  `some-id`,
  MIN(`timestamp`) AS timestamp_a,
  MAX(`timestamp`) AS timestamp_b
FROM 你的表名
GROUP BY `some-id`;

方案2:窗口函数+行转列(适用需要按顺序取指定位次时间、或未来可能扩展多列的场景)

先给同个some-id下的时间按顺序编号,再通过条件聚合转成多列:

WITH ranked_time AS (
  SELECT 
    `some-id`,
    `timestamp`,
    -- 同个some-id下按时间升序排序编号
    ROW_NUMBER() OVER (PARTITION BY `some-id` ORDER BY `timestamp`) AS rank_num
  FROM 你的表名
)
SELECT 
  `some-id`,
  MAX(CASE WHEN rank_num = 1 THEN `timestamp` END) AS timestamp_a,
  MAX(CASE WHEN rank_num = 2 THEN `timestamp` END) AS timestamp_b
FROM ranked_time
GROUP BY `some-id`;

如果单个some-id下的时间记录超过2条,只需要增加对应rank_num的CASE分支,就能生成更多列的时间字段。

内容的提问来源于stack exchange,提问作者damombz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:54:02