尝试通过累积变量更新sql中的临时表

ifsvaxew  于 2021-07-27  发布在  Java
关注(0)|答案(3)|浏览(384)

我有一个temp表,它包含4个变量,我需要对这些变量进行计算,然后将该字段从一个记录累加到另一个记录,类似于累加和。我在临时表1中设置了一个等级。这是我的密码:

UPDATE T1
SET T1.TOTAL_NET_BAL = ISNULL((SELECT T2.TOTAL_NET_BAL 
                               FROM #TEMP_TABLE_1 AS T2
                               WHERE T1.RANK - 1 = T2.RANK),0) + (T1.MAX_STD_CAPACITY + T1.MAX_QT_CAPACITY) - (T1.STANDARD_PANELS + T1.QUICKTURN_PANELS)
FROM #TEMP_TABLE_1 AS T1

所有这些操作都是更新表中当前行的total\u net\u bal。出于某种原因,当我们在下一排时,它没有抓住数量。

lf3rwulv

lf3rwulv1#

你在寻找一个累积的总和。您可以在这个链接中看到如何进行累积求和,并根据需要进行调整。

jqjz2hbq

jqjz2hbq2#

因此,我最终做的是使用sum函数将另一个select语句的代码更改为另一个temp表。仍然不知道为什么我原来的sql语句不能工作,但是我可以继续。谢谢。

flvtvl50

flvtvl503#

在SQLServer中,可以使用可更新的cte。如果我理解正确,您需要一个连续的总和:

with toupdate as (TOTAL_NET_BAL) over 
      select t.*,
             sum((T1.MAX_STD_CAPACITY + T1.MAX_QT_CAPACITY) - (T1.STANDARD_PANELS + T1.QUICKTURN_PANELS)) over (order by rank) as running_total
      from #temp_table t
update toupdate
    set total_net_bal = running_total;

相关问题