2017-04-18 58 views
-2
Update dp2 a set a.amt= (select((b.qty*b.rate)-b.discount) from dp2 b where a.dpinheadid=b.dpinheadid) 

错误来到当我更新相同的表列与计算另一列的值

ORA-01427: single-row subquery returns more than one row 
#For.Ex: TABLES DP2 A,DP2 B 
(b.qty*b.rate)-b.discount) THIS VALUE Update TO This column A.AMT 
+1

在版本之前和之后添加一些示例表数据。 (以及格式化的文本,请使用'{}'。) – jarlh

回答

0

的问题是,您要更新与select语句返回超过1排一行。

此选择:

select((b.qty*b.rate)-b.discount) from dp2 b where a.dpinheadid=b.dpinheadid 

回报比1分的结果更多 - 所以你不能用它作为更新值。

如果你想使用它,你需要它返回单个值,所以尽量使用WHERE条款或TOP 1只返回的第一个结果,等

+0

OP现在期望做什么? – jarlh

+0

雅所以只问 – siva

0

你尝试过此查询:

Update dp2 a set a.amt= a.qty*a.rate-a.discount 
+0

谢谢,我知道了 – siva

+0

@siva它是否工作?如果是的话,随时接受我的答案。如果不是,请让我知道 – Jens

+0

你的答案完美工作 – siva