select distinct a.*,b.续费数,round(b.续费数/a.余额不足用户*100,2)||'%' 续费率 from
(select 波次名称,region_name 营业区,area_name 营销中心,staff_name 客户经理,count(*) 余额不足用户 from bill.tmp_yH_xf@to_wjjs
where 波次名称 not like '%乡情网%' and region_name<>'xx市'
and 波次名称 like '%3月%' and region_name='xx分公司'
group by 波次名称,region_name,area_name,staff_name) a,
(select 波次名称,region_name 营业区,area_name 营销中心,staff_name 客户经理, count(*) 续费数 from bill.tmp_yH_xf@to_wjjs
where is_xf='已续费' and 波次名称 not like '%乡情网%' and region_name<>'xx市'
and 波次名称 like '%3月%' and region_name='xx分公司'
group by 波次名称,region_name,area_name,staff_name ) b
where a.波次名称=b.波次名称 and a.营业区=b.营业区 and a.营销中心=b.营销中心 and a.客户经理=b.客户经理; 这个语句中当红色部分为0时的记录怎么显示不出来?应该怎么修改?
count(1) 续费数,试试这样
改了后结果一样
isnull(count(1),0) as 续费数
我试了下,提示标识符不能识别,是不是isnull在oracle里面不能用呢。
你sql没有“关联”,没有的话默认是内关联,“在表中存在至少一个匹配时返回行”。
用 left 。你这个明显是以a为主,b是提供汇总数据的。
学习了。。。
先看 select 波次名称,region_name 营业区,area_name 营销中心,staff_name 客户经理,count(*) 余额不足用户 from bill.tmp_yH_xf@to_wjjs
where 波次名称 not like '%乡情网%' and region_name<>'xx市'
and 波次名称 like '%3月%' and region_name='xx分公司'
group by 波次名称,region_name,area_name,staff_name) a 裏面 有沒有數據。
如果有的話,就用left
on 2個表關聯一下。