当前位置: 代码迷 >> Oracle管理 >> ORACLE CASE WHEN 关联更新有关问题
  详细解决方案

ORACLE CASE WHEN 关联更新有关问题

热度:112   发布时间:2016-04-24 04:19:01.0
ORACLE CASE WHEN 关联更新问题
本帖最后由 oqq__L 于 2014-04-30 10:51:14 编辑

ID              CLASS            COST        CHARGE
173977     01     87.0000    87.0000
173977    13    12.0000                   12.0000
173977    04    14.0000                   14.0000
173977    08    160.0000                   160.0000
173977    09    140.0000                   140.0000
173977    西药    441.7760 441.7760
------------------------------------------------------------

我现在需要将这个表bill 里面 class=西药的 cost 和charge的值加在 class=13 上面。。。用case when 关联更新,可是写的时候,,写不出来了。。。大家来给我指导下。。谢谢。。。


最终要的效果是

ID              CLASS            COST        CHARGE
173977       01      87.0000       87.0000
173977       13      453.776       453.776
173977       04      14.0000       14.0000
173977       08     160.0000       160.0000
173977       09     140.0000  140.0000

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:


ID              CLASS            COST        CHARGE
173977     01     87.0000    87.0000
173977    13    12.0000                   12.0000
173977    04    14.0000                   14.0000
173977    08    160.0000                   160.0000
173977    09    140.0000                   140.0000
173977    西药    441.7760 441.7760
------------------------------------------------------------

我现在需要将这个表bill 里面 class=西药的 cost 和charge的值加在 class=13 上面。。。用case when 关联更新,可是写的时候,,写不出来了。。。大家来给我指导下。。谢谢。。。


最终要的效果是

ID              CLASS            COST        CHARGE
173977       01      87.0000       87.0000
173977       13      453.776       453.776
173977       04      14.0000       14.0000
173977       08     160.0000       160.0000
173977       09     140.0000  140.0000

SELECT ID, DECODE(CLASS, '西药', '13', CLASS), SUM(COST), SUM(CHARGE)
  FROM TAB
 GROUP BY ID, DECODE(CLASS, '西药', '13', CLASS)



update 更新怎么办??因为id 的值不只一个。。。

UPDATE TAB
   SET (TAB.COST, TAB.CHARGE) = (SELECT SUM(COST), SUM(CHARGE)
                                   FROM TAB T
                                  WHERE T.ID = TAB.ID
                                    AND DECODE(T.CLASS, '西药', '13', T.CLASS) =
  相关解决方案