首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

坐等大神

2013-12-10 
坐等大神,求救有张表 t1数据结构如下accessnoxp spoptpyefailsuccess111145sub78111116unsub40222254sub92

坐等大神,求救
有张表 t1数据结构如下
accessno   xp sp    optpye    fail  success
  1111     4   5      sub      7      8    
  1111     1   6      unsub    4      0
  2222     5   4      sub      9      2
我是根据 accessno 和 optype 分组 出现上面的情况
我想要得到的是下面的结果
accessno   xp sp    optpye    fail  success
  1111     5   11      sub      7      8    
  1111     5   11      unsub    4      0
  2222     5   4      sub      9      2
就是 acccessno相同的情况下  将sp ,xp  sum起来 后面的不能改变  而且还是要展示那么原来的列
在线等  大神答复
[解决办法]

select accessno,
       (select sum(xp) from t1 where accessno=tt.accessno) as xp,
       (select sum(sp) from t1 where accessno=tt.accessno) as sp,
       optpye,
       fail,
       success
  from t1 tt

[解决办法]
select accessno,
       t2.xp,
       t2.sp,
       optpye,
       fail,
       success
  from t1,(select accessno,sum(xp) xp,sum(sp) from t1 group by accessno) t2
where t1.accessno=t2.accessno

[解决办法]
以后2种都访问多次数据库。应该用分析函数

我给你个示意
sum(xp) over (partition by no order by no 
rows between unbounded preceding and unbounded following)

热点排行