日期:2014-05-17  浏览次数:20879 次

==== oracle奇怪现象,一个简单的update语句不能执行。 ====
update   GC_ZBHLX_MXB
  set   MXB_ZBHLX=smoney
from   (
select  
    MXB_ZBHLX,MXB_BH,   sum(MXB_ZCDYZBHLX)   over(order   by   MXB_ZCDYZBHLX   desc)as   smoney   from   GC_ZBHLX_MXB   rder   by   MXB_ZCDYZBHLX   desc)

其中
select  
    MXB_ZBHLX,MXB_BH,   sum(MXB_ZCDYZBHLX)   over(order   by   MXB_ZCDYZBHLX   desc)as   smoney   from   GC_ZBHLX_MXB   rder   by   MXB_ZCDYZBHLX   desc
执行结果为
MXB_ZBHLX   MXB_BH                         smoney
0.00   EE06AS070MZ01 4109.36
14.96   EE06AS070MZ01 4259.37
我写update是想用第三列去更新第一列。

请问各位大虾,我该如何写这个update语句?



------解决方案--------------------
UPDATE
GC_ZBHLX_MXB A
SET MXB_ZBHLX =
(
SELECT SUM(MXB_ZCDYZBHLX) FROM GC_ZBHLX_MXB B WHERE A.MXB_BH = B.MXB_BH
)
WHERE EXISTS
(
SELECT 1 FROM GC_ZBHLX_MXB C WHERE A.MXB_BH = C.MXB_BH
)

试一下.
------解决方案--------------------
update GC_ZBHLX_MXB
set MXB_ZBHLX= (select sum(MXB_ZCDYZBHLX) over(order by MXB_ZCDYZBHLX desc)as smoney from GC_ZBHLX_MXB rder by MXB_ZCDYZBHLX desc)

试试~~~~:)