2013-02-15 61 views
1

我不得不从选我得到这个2代表与此行做更新更新来自SELECT

T1

customer_number | trx number  | amount_due_remaining 
____________________________________________________ 
309514   |MM1218881/2011 | 0 
309514   |MM1218882/2011 | 0 
309514   |MM1218903/2011 | 0 
309514   |MM1218905/2011 | 0 

T2

contract | numdoc   | import 
___________________________________ 
309514 |MM1218881/2011 | 2000,77 
309514 |MM1218882/2011 | 1000,45 
309514 |MM1218903/2011 | 1000,23 
309514 |MM1218905/2011 | 2500,12 

我必须把在T2中,将列的数量T1的值amount_due重新导入进口

我这样做查询

update dbestrconto T1 
SET T1.IMPORTO = (
SELECT nvl(T2.AMOUNT_DUE_REMAINING,0) 
FROM [email protected] T2 
WHERE T2.customer_number=T1.contratto 
AND T2.customer_number='3095614' 
and T2.TRX_NUMBER=T1.NUMDOC 
) 

,但错了,请帮助我。

问候,鲁道夫

回答

0

要更新所有行 - 你需要添加到您更新where子句。

我会推荐使用MERGE代替。

merge into dbestrconto t1 
using [email protected] t2 
on (t2.customer_number=t1.contratto 
and t2.trx_number=t1.numdoc) 
when matched then update set 
    t1.importo = nvl(t2.amount_due_remaining,0) 
where t2.customer_number='3095614'; 

问候。 HAKI。