当前位置: 代码迷 >> Oracle管理 >> 如何写这个sql语句
  详细解决方案

如何写这个sql语句

热度:59   发布时间:2016-04-24 04:29:32.0
求助怎么写这个sql语句
现在有一张表 字段 id  value 需要统计出这样一个数据表:
------------------
id         value
100        2000
101        200
102        400
103        600
104        800
-------------------
实际在表中的数据是这样 
-------------------
id         value
100        800
101        200
102        400
103        600
104        0
-------------------
就是把id为100的值转换为id为104的值,同时id为100的value为其他四个的总和

------解决方案--------------------
引用:
with t as 
(
select 100 id ,800 value from dual 
union all
select 101 id ,200 value from dual 
union all
select 102 id ,400 value from dual 
union all
select 103 id ,600 value from dual 
union all
select 104 id ,0 value from dual 
)
select 100 id,sum(value) from t 
union all
select decode(id,100,104,id),value from t where id<>104 order by id


with t as ( select 100 id ,800 value from dual 
 union ALL select 101 id ,200 value from dual 
  union ALL select 102 id ,400 value from dual 
   union ALL select 103 id ,600 value from dual
     union ALL select 104 id ,0 value from dual  ) 
SELECT T.ID,
       DECODE(T.ID,
              104,
              (SELECT VALUE FROM T WHERE ID = 100),
              100,
              (SELECT SUM(VALUE) FROM T WHERE ID <> 104),
              T.VALUE)
  FROM T T
  相关解决方案