gpt4 book ai didi

sql-server - 在 T-SQL 中使用另一列的计算值填充一列

转载 作者:行者123 更新时间:2023-12-03 22:50:49 24 4
gpt4 key购买 nike

我有一个临时表(#Temptable3),我正在填充它以帮助构建要报告的数据集。我已经通过一些尝试和错误解决了大多数逻辑步骤,并在这里找到了先前问题的答案(谢谢!),但是无法破解最后一点。为了简化,我从下面的示例数据集中删除了不相关的列:

我目前有:

RowNumber   Increment   Score
-----------------------------
1 1 NULL
2 100000 NULL
3 -1 NULL
4 1 NULL
5 10 NULL
6 -1 NULL
7 -100000 NULL
8 -10 NULL

我的目标是用增量列的总和填充分数列,直到并包括它自己的行,例如:

RowNumber   Increment   Score
-----------------------------
1 1 1
2 100000 100001
3 -1 100000
4 1 100001
5 10 100011
6 -1 100010
7 -100000 10
8 -10 0

我尝试过使用自连接,但未能使各种更新语句发挥作用,但找不到任何看起来有希望的东西。如果这还不够,我们深表歉意。如果需要,请提出问题感谢您的帮助。

感谢 HABO 的指点,帮助我找到有关运行总和的问题。 janderssons reply中的链接上一个问题引导我找到了一个对我有用的解决方案:

声明@runningtotal int设置@runningtotal = 0

更新#TempTable3设置@runningtotal = 分数 = @runningtotal + 增量

来自#TempTable3

最佳答案

Declare @Table table (RowNumber int,Increment int,score int)
Insert into @Table values
(1,1,NULL),
(2,100000,NULL ),
(3,-1,NULL),
(4,1,NULL),
(5,10,NULL),
(6,-1,NULL),
(7,-100000,NULL),
(8,-10,NULL)

Update @Table Set Score=B.Score
From @Table A
Join (Select RowNumber,Score=sum(Increment) over (order by RowNumber) from @Table) B
on A.RowNumber=B.RowNumber

Select * from @Table

或者

UPDATE @Table SET Score=(SELECT SUM(Increment) 
FROM @Table B
WHERE b.RowNumber <= A.RowNumber)
FROM @Table A

返回

  RowNumber Increment       score
1 1 1
2 100000 100001
3 -1 100000
4 1 100001
5 10 100011
6 -1 100010
7 -100000 10
8 -10 0

关于sql-server - 在 T-SQL 中使用另一列的计算值填充一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38098833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com