select b.area,sum(case when b.tel_area=substr(a.tel_no,1,4) or b.tel_area=substr(a.tel_no,1,5) then 1 else 0 end) cout,sum(case when b.tel_area=substr(a.tel_no,1,4) or b.tel_area=substr(a.tel_no,1,5) then num else 0 end) total_num
from a,b
group by c.

解决方案 »

  1.   

    select b.area,sum(case when b.tel_area=substr(a.tel_no,1,4) or b.tel_area=substr(a.tel_no,1,5) then 1 else 0 end) cout,sum(case when b.tel_area=substr(a.tel_no,1,4) or b.tel_area=substr(a.tel_no,1,5) then num else 0 end) total_num
    from a,b
    group by b.area
      

  2.   

    我的ORACLE是7
    所以不支持CASE WHEN
    大家还有别的方法吗?
      

  3.   

    我也不清楚.试试
    select b.area,sum(case when (b.tel_area=substr(a.tel_no,1,4) or b.tel_area=substr(a.tel_no,1,5)) then 1 else 0 end) cout,sum(case when (b.tel_area=substr(a.tel_no,1,4) or b.tel_area=substr(a.tel_no,1,5)) then num else 0 end) total_num
    from a,b
    group by b.area
      

  4.   

    SELECT   b.area, COUNT (*), SUM (num)
        FROM a, b
       WHERE a.tel_no LIKE b.tel_no || '%'
    GROUP BY b.tel_area;
      

  5.   

    KingSunSha(弱水三千)方法OK
    也谢谢sbaz(万神渡劫)