2014-09-03 79 views
0

我有一个关于ORACLE SQL的问题。 我所试图做的基于其行值更新每一行中的列出现

所以正在更新列中的值,我的表是这样的,

NAME VALUE1 VALUE2 VALUE3 SOURCEVAL RESULT 
HEAD2  0  1  0  30  0 
HEAD2  1  0  1  30  0 
HEAD2  1  1  1  30  0 

这是我的SQL

update testa set result = (select (testa.value1*testa.sourceval)+(testa.value2*testa.sourceval)+(testa.value3*testa.sourceval) from testa) 

基本上我想根据每一行中的数据更新列结果。 我期望的结果将是

First HEAD2 Result = 30, 
Second HEAD2 Result = 60, 
Third HEAD2 Result = 90 

请帮助我,我不断收到 “ORA-01427:单行子查询返回多个行” 错误

回答

4

试试这个:

update testa 
set result = (value1*sourceval) + (value2*sourceval) + (value3*sourceval) 

无在这种情况下需要一个子查询。你得到的错误是因为你的子查询返回的不止是一行。

另外,这也将工作:

update testa 
set result = (value1+value2+value3)*sourceval