select distinct ti.callingnum,
                ti.callednum,
                case
                  when substr(ti.callednum, 1, 2) <> '00' and
                       substr(ti.callednum, 1, 3) <> '100' then
                   0
                  else
                   sum(ti.concost)
                   over(partition by callednum,
                        callednum order by ti.callednum)
                end leijia
  from test ti
 where CALLINGNUM = '0664196'
   and CALLEDNUM = '10086';

解决方案 »

  1.   

    如果TEST表中我想显示出多列(比如TEST表中还有STARTTIME,ENDTIME等列,同时我也想显示出这些列),用DISTINCT就没什么效果了,还有其它方法吗?
      

  2.   

    如果TEST表中我想显示出多列(比如TEST表中还有STARTTIME,ENDTIME等列,同时我也想显示出这些列),用DISTINCT就没什么效果了,还有其它方法吗?
    如果你两条数据不一样的情况下都会显示出来,只有完全一样才会过滤掉,如果两条数据不一样,你想显示几条呢?
      

  3.   

    那你就用这个结果集和源表再进行连接,获取你想要的column
      

  4.   

    可以考虑使用oracle分析函数 keep 关键字
    oracle 分析函数中 keep关键字的使用