我对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:单行子查询返回多行"错误
答案 0 :(得分:4)
试试这个:
update testa
set result = (value1*sourceval) + (value2*sourceval) + (value3*sourceval)
在这种情况下不需要子查询。您得到的错误是因为您的子查询返回的行多于一行。
或者,这也可以:
update testa
set result = (value1+value2+value3)*sourceval