假设我有一个表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插入另一个表.我正在运行的实际查询比这更复杂,但我希望在发布一个巨大的代码示例之前先解决这个简单的问题.
尝试这样的事情:
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)