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

如何基于NEXT_COMPOSITION列实现分段递增的序列列?

实现需求的SQL方案

你需要的是基于NEXT_COMPOSITION列的标记生成分组序列,核心思路是用累计求和窗口函数实现,以下是具体方案:

前提说明

SQL表本身是无序的,必须指定一个能确定行顺序的列(比如自增ID、时间戳等,下文用id作为示例排序列,请替换为你实际的排序列)。

实现代码

SELECT
    *,
    -- 计算累计的1的数量,再加1得到目标序列
    SUM(CASE WHEN NEXT_COMPOSITION = 1 THEN 1 ELSE 0 END) 
        OVER (ORDER BY id ROWS UNBOUNDED PRECEDING) + 1 AS sequence_col
FROM your_table; -- 替换为你的表名

原理解释

  1. 先用CASE语句把NEXT_COMPOSITION等于1的行标记为1,其他行(包括null)标记为0;
  2. 用SUM() OVER (...)窗口函数计算从第一行到当前行的标记累计和,这个值代表当前行之前(含当前)遇到的1的总次数;
  3. 累计和加1后,正好满足:起始值为1,每遇到一个1序列递增1,后续行保持当前序列值直到下一个1出现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:47:18