2015-10-02 65 views
1

TempTable有列RunningTotalClientCount,我们也有@RunningTotal变量声明,并设置为0。表更新语句中设置变量

有人能请解释一下这是什么线路呢?

UPDATE Temptable 
SET @RunningTotal = RunningTotal = @RunningTotal + ClientCount 
+0

我想更新变量(@)RunningTotal和表连同该值的字段(@)RunningTotal + ClientCount –

回答

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 

再运行更新语句:

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