select date, 
       sum(decode(inprefix, a, decode(incarrier, a1, duration,0), 0))  incarrier_a1,
       sum(decode(inprefix, a, decode(incarrier, a2, duration,0), 0))  incarrier_a,
       sum(decode(outprefix, a, decode(outcarrier, b1, duration,0), 0))  outcarrier_b1,
       sum(decode(outprefix, a, decode(outcarrier, b1, duration,0), 0))  outcarrier_b1
from tmp
group by date这个不行吗?楼主有没测试?

解决方案 »

  1.   

    不是的 我改了一点东西
    你再帮我看看  incarrier_a1就是当inprefix为a开头时 a1每天duration的总量
    谢谢你啊
      

  2.   

    select date, 
           sum(decode(instr(inprefix, 'a') , 1, decode(incarrier, a1, duration,0), 0))  incarrier_a1,
           sum(decode(inprefix, a, decode(incarrier, a2, duration,0), 0))  incarrier_a2,
           sum(decode(outprefix, a, decode(outcarrier, b1, duration,0), 0))  outcarrier_b1,
           sum(decode(outprefix, a, decode(outcarrier, b1, duration,0), 0))  outcarrier_b1
    from tmp
    group by date我这个写法是判断inprefix是否存在'a',因为a1,a2都有a。不知道合不合楼主意思。
      

  3.   

    INSTR方法的格式为
    INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)可以象你那样instr(inprefix, 'a')吗  省略 起始位置, 匹配序号?
      

  4.   

    INSTR(源字符串, 目标字符串)  就是  2个字符串  一样 就是的1 是吗