1
TempTable
有列RunningTotal
和ClientCount
,我们也有@RunningTotal
变量声明,并设置为0。表更新语句中设置变量
有人能请解释一下这是什么线路呢?
UPDATE Temptable
SET @RunningTotal = RunningTotal = @RunningTotal + ClientCount
TempTable
有列RunningTotal
和ClientCount
,我们也有@RunningTotal
变量声明,并设置为0。表更新语句中设置变量
有人能请解释一下这是什么线路呢?
UPDATE Temptable
SET @RunningTotal = RunningTotal = @RunningTotal + ClientCount
从来没有见过这个构造,但它似乎是这样工作的。 填写栏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
再运行更新语句:
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
我想更新变量(@)RunningTotal和表连同该值的字段(@)RunningTotal + ClientCount –