case when tab.sl is null then 0 else tab.sl end value
from sys_dict sd left join
(select jkprs.rating_type, count(*) sl from jl_key_person_rating_summary jkprs
left join
<choose>
<whentest="sysType == '6'.toString()">
jl_key_person_minor jkp
</when>
<otherwise>
jl_key_person jkp
</otherwise>
</choose>
on jkp.sys_type = #{sysType} and jkp.id = jkprs.key_person_id
<where>
and jkp.id is not null
and jkprs.is_history = '1'
<choose>
<whentest="scope_grade == '3'.toString()">
AND ((jkp.city_id = #{scope_area_id} and jkp.city_id not in (select city_id from jl_key_person_rating_dual_person where key_person_id=jkp.id))
OR exists(select id from jl_key_person_rating_dual_person where city_id = #{scope_area_id} AND key_person_id=jkp.id))
</when>
<whentest="scope_grade == '4'.toString()">
AND ((jkp.area_id = #{scope_area_id} and jkp.area_id not in (select area_id from jl_key_person_rating_dual_person where key_person_id=jkp.id))
OR exists(select id from jl_key_person_rating_dual_person where area_id = #{scope_area_id} AND key_person_id=jkp.id))
</when>
<whentest="scope_grade == '5'.toString()">
AND ((jkp.street_id = #{scope_area_id} and jkp.street_id not in (select street_id from jl_key_person_rating_dual_person where key_person_id=jkp.id))
OR exists(select id from jl_key_person_rating_dual_person where street_id = #{scope_area_id} AND key_person_id=jkp.id))
</when>
<whentest="scope_grade == '6'.toString()">
AND ((jkp.community_id = #{scope_area_id} and jkp.community_id not in (select community_id from jl_key_person_rating_dual_person where key_person_id=jkp.id))
OR exists(select id from jl_key_person_rating_dual_person where community_id = #{scope_area_id} AND key_person_id=jkp.id))
</when>
</choose>
</where>
group by jkprs.rating_type) tab
on sd.value = tab.rating_type
where sd.`type` = 'rating_level' and sd.del_flag = '0'