我查询存储整数的一个table,
查询的形式如下,a b个数是相等的,动态的,我想在a和b的后面求a b平均值,怎么做简单点呢select a a1,a a2,a a3,b b1,b b2,b b3结果形式select a a1,a a2,a a3,a_avg,b b1,b b2,b b3,b_avg我是这样写的,不过感觉有点罗索select a a1,a a2,a a3,(a+a+a)/3 a_avg,b b1,b b2,b b3,(b+b+b)/3 b_avg
上面的a b 是这样的形式:max(decode(t.date, to_date('2011/03/27', 'YYYY/MM/DD'), a))
max(decode(t.date, to_date('2011/03/27', 'YYYY/MM/DD'), b))

解决方案 »

  1.   


    select a a1,a a2,a a3,avg(a) over() a_avg,b b1,b b2,b b3,avg(b) over() b_avg是要这样的?
      

  2.   


    比如我得结果集有一行 a1 a2 a3 b1 b2 b3
      1  2  3  1  2  3
    我想最后的结果形式
     a1 a2 a3 a_avg b1 b2 b3 b_avg
      1  2  6  3     4  5  3  4
      

  3.   

    即简单又能解决问题的方法就是好方法.
    select a a1,a a2,a a3,(a+a+a)/3 a_avg,b b1,b b2,b b3,(b+b+b)/3 b_avg
      

  4.   

    我的代码是程序中根据日期动态生成的,日期很长,sql也很长,不怎么好看
      

  5.   

    不明白楼主这2句啥意思喔?
    如果t.date等于20110327返回a, 不等于20110327返回空?
    decode()只有一个返回值,然后max()取什么的最大?max(decode(t.date, to_date('2011/03/27', 'YYYY/MM/DD'), a))
    max(decode(t.date, to_date('2011/03/27', 'YYYY/MM/DD'), b))
      

  6.   


    我选取一段时间,每天的时间对应好多a,这是我取某一天的最大的a
    max(decode(t.date, to_date('2011/03/27', 'YYYY/MM/DD'), a))