SELECT * FROM  
(select case when left(tel,2) in ('01','02') then left(tel,3)
  else left(tel,4)
  end AS AAA , count(1) BBB
from tb a
where a.bill_time between '2011-03-01 00:00:000' and '2011-03-08 00:00:000' 
group by case when left(tel,2) in ('01','02') then left(tel,3)
  else left(tel,4)
  end) A left join table2 b on a.ars_id=b.ars_id
left join table3 c on b.area_id=c.area_id先统计后再连接,如果你后面连接是一对多的话,统计就会重复了

解决方案 »

  1.   

    SELECT * FROM  
    (select case when left(tel_no,2) in ('01','02') then left(tel_no,3)
      else left(tel_no,4)
      end AS AAA , count(1) BBB
    from lo_ars_success 
    where bill_time between '2011-03-01 00:00:000' and '2011-03-08 00:00:000' 
    group by case when left(tel_no,2) in ('01','02') then left(tel_no,3)
      else left(tel_no,4)
      end) A left join sy_ars_info b on A.ars_id=b.ars_id
    left join sy_area_no c on b.area_id=c.area_id提示Invalid column name 'ars_id'.
      

  2.   

    SELECT * FROM   
    (select case when left(tel_no,2) in ('01','02') then left(tel_no,3)
      else left(tel_no,4)
      end AS AAA , count(1) BBB
    from lo_ars_success  
    where bill_time between '2011-03-01 00:00:000' and '2011-03-08 00:00:000'  
    group by case when left(tel_no,2) in ('01','02') then left(tel_no,3)
      else left(tel_no,4)
      end) A left join sy_ars_info b on A.ars_id=b.ars_id
    left join sy_area_no c on b.area_id=c.area_id如上语句 提示Invalid column name 'ars_id'.