在SQL脚本中考虑一个while循环

Ric*_*ich 1 sql refactoring

假设我有一个表amountInfo,其中包含列(id,amount1,amount2,amount3),其中amountX是money值,id是一个int值,范围从1到10以下的某个int.

目前我有一些代码大致这样做:

declare @id int, @idmax int, @amounttotal money
select @idmax = (select max(Id) from amountInfo)
while (@id <= @idmax)
begin
    select @amounttotal = sum(amount1 + amount2 + amount3) 
                          from amountinfo where id=@id
    -- do something with @amounttotal
    select @id=@id+1
end
Run Code Online (Sandbox Code Playgroud)

有没有办法在这里用某种复杂的select语句分解while循环?我对C/C++/C#编程很有经验,但SQL对我来说有点新鲜.谢谢!

编辑:基本上"--do something"部分涉及将单个@amounttotals插入另一个表.我正在运行的实际查询比这更复杂,但我希望在发布一个巨大的代码示例之前先解决这个简单的问题.

KM.*_*KM. 5

尝试这样的事情:

INSERT INTO OtherTable
        (id, col1, col2, ...)
    SELECT 
        dt.id, t.col1, dt.TotalSum
        FROM (SELECT
                  id, SUM(t.amount1 + t.amount2 + t.amount3) AS TotalSum
                  FROM AMOUNTINFO
                  GROUP BY id
                  WHERE id>=@id AND id<=@idmax
             ) dt
            INNER JOIN  AMOUNTINFO t ON dt.id=t.id
Run Code Online (Sandbox Code Playgroud)