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

如何在SQL视图中基于另一列生成递增编号?

填充Number列的SQL解决方案

你当前的SQL里,RESULT为TRUE时的编号逻辑是对的(按Record排序生成从2开始的连续号),但ELSE设为0不符合需求。结合这类场景的常见需求(推测你截图里FALSE行的Number要和最近的TRUE行编号一致),可以这么改:

  • 先标记TRUE行的目标编号
    先给RESULT=TRUE的行生成编号,FALSE行暂时留空:

    SELECT 
        Record,
        RESULT,
        CASE WHEN RESULT = TRUE THEN ROW_NUMBER() OVER (ORDER BY Record) + 1 ELSE NULL END AS temp_number
    FROM 你的视图名称
    
  • 补全FALSE行的编号
    用窗口函数把FALSE行的编号填充成最近的TRUE行的编号:

    SELECT 
        Record,
        RESULT,
        LAST_VALUE(temp_number IGNORE NULLS) OVER (ORDER BY Record ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Number
    FROM (
        SELECT 
            Record,
            RESULT,
            CASE WHEN RESULT = TRUE THEN ROW_NUMBER() OVER (ORDER BY Record) + 1 ELSE NULL END AS temp_number
        FROM 你的视图名称
    ) t
    

如果你的数据库不支持IGNORE NULLS(比如低版本MySQL),换用MAX()函数也能实现:

SELECT 
    Record,
    RESULT,
    MAX(temp_number) OVER (ORDER BY Record ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Number
FROM (
    SELECT 
        Record,
        RESULT,
        CASE WHEN RESULT = TRUE THEN ROW_NUMBER() OVER (ORDER BY Record) + 1 ELSE NULL END AS temp_number
    FROM 你的视图名称
) t

要是你截图里FALSE行的Number有其他规则(比如就是要和TRUE行的编号不相关的特定值),可以把具体规则说清楚,再调整语句。

内容的提问来源于stack exchange,提问作者Mr. X

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 02:06:16