是否可以将 SUM() ORDER BY 的结果放入原始表中?

Posted

技术标签:

【中文标题】是否可以将 SUM() ORDER BY 的结果放入原始表中?【英文标题】:Is it possible to put a result of SUM() ORDER BY in original table? 【发布时间】:2020-07-30 08:27:49 【问题描述】:

是否可以在原始表中添加(放置)SUM() ORDER BY 的结果?


A Table
Columns   id,value,val2
1,200,1
2,300,3
3,300,2
4,400,4
5,100,1
6,100,1
7,100,1
8,100,4

TOTAL 1 = 500 * 1.5 = 750
 

B Table
Columns   id,value,val2
1,100,50
2,500,33
3,600,0
5.900,0


Ideal
B Table
Columns   id,value,val2
1,100,770
2,500,33
3,600,0
5.900,0

SELECT A.id , SUM (value)*1.5 AS VITAMIN_D FROM A WHERE val2 in (SELECT id from B)

我想更新 B 表中的 val3 以添加 SUM(value) 的结果。 我该怎么办?

【问题讨论】:

改为创建视图,以避免数据不一致。 显示所需的输出。并且 - 表 B 有 4 列,但您只显示 3 个值。 A()B_table 和我一样。实际上,他们有 60000000 条记录。使视图成为一种有效的方法吗? 对不起,我犯了错误..我修改了。 仍然显示此示例数据所需的输出。 【参考方案1】:

我认为你想要一个相关的子查询:

update tableb
set val3 = (
    select sum(value) * 1.5
    from tablea a
    where a.val2 = tableb.id
)

【讨论】:

感谢您的回答。 ORA-01427: 单行子查询返回多行。 @puss 。 . .子查询是没有group by 的聚合子查询。它不能返回多于一行。也许您的桌面上有触发器或正在发生其他事情,但这似乎回答了您的问题。

以上是关于是否可以将 SUM() ORDER BY 的结果放入原始表中?的主要内容,如果未能解决你的问题,请参考以下文章

RESET SUM(AMT_FIELD) OVER(PARTITION BY UNIQUE FIELD ORDER BY ROWNUM)

ORDER 查询 BY 两个变量:sum() 和 date

oracle查询选择语句——count、sum、order by、group by

jdk8 stream实现sql单表select a,b,sum(),avg(),max() from group by a,b order by a,b limit M offset N及其性能

SQL注入 order by后的注入(Less-46)

Oracle - SELECT DENSE_RANK OVER(ORDER BY、SUM、OVER 和 PARTITION BY)