TempTable
包含RunningTotal
和ClientCount
列,我们还声明了@RunningTotal
变量,并设置为0。
有人可以解释一下这行是做什么的吗?
UPDATE Temptable
SET @RunningTotal = RunningTotal = @RunningTotal + ClientCount
答案 0 :(得分:0)
之前从未见过这个构造,但它似乎像这样工作。
它会填充RunningTotal
列,累计总数为ClientCount
。
假设我们从填充了RunningTotal
的表开始:
CREATE TABLE dbo.Temptable (ClientCount int, RunningTotal int)
INSERT INTO Temptable (ClientCount) VALUES (5), (4), (6), (2)
SELECT * FROM Temptable
ClientCount RunningTotal
----------- ------------
5 NULL
4 NULL
6 NULL
2 NULL
然后运行update语句:
DECLARE @RunningTotal int = 0
UPDATE Temptable SET @RunningTotal = RunningTotal = @RunningTotal + ClientCount
SELECT * FROM Temptable
ClientCount RunningTotal
----------- ------------
5 5
4 9
6 15
2 17
如您所见,RunningTotal
的每个值都是当前和任何先前记录中所有ClientCount
值的总和。
缺点是,您无法控制记录的处理顺序。这让我想知道这是否是生产环境中推荐的方法。
请在此处查看更深入的讨论: Calculate a Running Total in SQL Server