ORACLE CASE WHEN 关联更新问题

oqq__L 2014-04-30 10:48:48

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
...全文
151 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
流浪川 2014-04-30
  • 打赏
  • 举报
回复
引用 2 楼 oqq__L 的回复:
[quote=引用 1 楼 hidanger521 的回复:] [quote=引用 楼主 oqq__L 的回复:] 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)
[/quote] update 更新怎么办??因为id 的值不只一个。。。[/quote]
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) =
                                        TAB.CLASS)
你自己测试一下吧哈
oqq__L 2014-04-30
  • 打赏
  • 举报
回复
引用 1 楼 hidanger521 的回复:
[quote=引用 楼主 oqq__L 的回复:] 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)
[/quote] update 更新怎么办??因为id 的值不只一个。。。
流浪川 2014-04-30
  • 打赏
  • 举报
回复
引用 楼主 oqq__L 的回复:
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)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧