2014-09-03 46 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