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

如何获取上一行field1的值并将其乘以2完成计算?

如何获取field1字段的上一行值并将其乘以2?

需求说明:

  • 表中第一行的field1字段存在初始值,其余行的field1初始为NULL
  • 需要计算每行的field1值为上一行field1值的2倍

测试表代码

DECLARE @varTable1 Table
(
[id] [int],
[field1] [decimal](18,4)
)

INSERT INTO @varTable1
VALUES
(1,20),
(2,NULL),
(3,NULL),
(4,NULL)

解决方案:递归CTE

使用递归CTE可以实现这种逐行依赖的计算逻辑,代码如下:

WITH RecursiveCTE AS (
    -- 锚点成员:获取第一行的初始数据
    SELECT id, field1
    FROM @varTable1
    WHERE id = 1

    UNION ALL

    -- 递归成员:关联上一行并计算当前行的值
    SELECT t.id, CAST(r.field1 * 2 AS decimal(18,4)) AS field1
    FROM @varTable1 t
    INNER JOIN RecursiveCTE r ON t.id = r.id + 1
)
SELECT id, field1 FROM RecursiveCTE ORDER BY id;

说明

  • 锚点成员先提取出第一行的初始值,作为递归的起点
  • 递归成员通过id = r.id + 1匹配下一行,将上一行的field1乘以2得到当前行的值
  • 最终返回的结果与预期输出完全一致:
id  field1
1   20.0000
2   40.0000
3   80.0000
4   160.0000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:05:21