sql-server - 用表本身的数据更新表的每一行
问题描述
我在更新工作表时遇到问题 - 该表中的值来自表本身。这是我的桌子:
+----------+----------+-----+---------+
| EVEN_KEY | INVE_KEY | QUA | QUA_MAX |
+----------+----------+-----+---------+
| 1 | 2 | 1 | NULL |
| 2 | 2 | 2 | NULL |
| 3 | 2 | 3 | NULL |
| 1 | 1 | 2 | NULL |
| 4 | 2 | 3 | NULL |
+----------+----------+-----+---------+
我想做的是更新列 qua_max - 为每一行的给定 inve_key 汇总列 qua。因此,上表中的结果在更新后应如下所示:
+----------+----------+-----+---------+
| EVEN_KEY | INVE_KEY | QUA | QUA_MAX |
+----------+----------+-----+---------+
| 1 | 2 | 1 | 9 |
| 2 | 2 | 2 | 9 |
| 3 | 2 | 3 | 9 |
| 1 | 1 | 2 | 1 |
| 4 | 2 | 3 | 9 |
+----------+----------+-----+---------+
这是我的问题 -此示例中的查询给了我错误,我什至无法运行它。怎么了?
错误:
询问:
UPDATE @TEMP_FINAL
SET QUA_MAX = (SELECT SUM(QUA)
FROM @TEMP_FINAL t2
WHERE @TEMP_FINAL.INVE_KEY = t2.INVE_KEY
GROUP BY INVE_KEY
)
示例表:
DECLARE @TEMP_FINAL TABLE
(
EVEN_KEY INT,
INVE_KEY INT,
QUA INT,
QUA_MAX INT
)
insert into @TEMP_FINAL (even_key, inve_key, qua)
values(1, 2, 1),
(2,2,2),
(3,2,3),
(1,1,2),
(4,2,3)
解决方案
你可以试试这个。。
UPDATE t1
SET t1.QUA_MAX = a.sum_qua
from @temp_final t1,
(SELECT SUM(QUA) as sum_qua,inve_key
FROM @TEMP_FINAL t2
GROUP BY INVE_KEY
) a
where t1.INVE_KEY = a.INVE_KEY
推荐阅读
- python - 如何使用列名作为变量基于 null/not null 过滤数据框?
- swift - 如何在 switch 语句中使用元组作为模式
- html - 使硒单击特定元素
- r - avoid "pandoc document conversion failed with error 61" for `github_document`
- git - 变基后如何隐藏“gitk”中的旧提交?
- r - 如何设置自定义 R 安装以在 Jupyter 中使用 rpy2?
- microsoft-graph-api - 添加 MS Teams 选项卡(规划器)导致 BadRequest
- r - 如何在 Shiny R 中使用 radioButton 和 actionButton 值进行响应式绘图
- android - 部署 ionic 应用程序时如何解决“运行子进程 ng 时发生错误”?
- java - RL4J A3C 深度学习从网络抛出输出不是概率分布