(SELECT COUNT(DISTINCT t.equipment_specific_id) FROM wl_equipment_specific_alarm t WHERE FIND_IN_SET(t1.id, t.system_ids) > 0 AND t.status = 1) AS value
FROM
f_fire_fighting_system t1
LEFT JOIN wl_equipment_category t2 on t1.system_type = t2.id
WITH t1 as (
SELECT ff.id,ff.name,system_type_code as code from f_fire_fighting_system ff LEFT JOIN wl_equipment_category wec on ff.system_type = wec.id
WHERE
t1.system_type_code IS NOT NULL AND LENGTH(TRIM(t1.system_type_code)) != 0
AND t2.name IS NOT NULL AND LENGTH(TRIM(t2.name)) != 0
<iftest="bizOrgCode != null and bizOrgCode != ''">
AND t1.biz_org_code LIKE CONCAT(#{bizOrgCode},'%')
</if>
) d
WHERE
d.value != 0
GROUP BY
d.system_type_code
ff.system_type_code IS NOT NULL AND LENGTH(TRIM(ff.system_type_code)) != 0
AND wec.name IS NOT NULL AND LENGTH(TRIM(wec.name)) != 0
<iftest="bizOrgCode != null and bizOrgCode != ''">
AND t1.biz_org_code LIKE CONCAT(#{bizOrgCode},'%')
</if>
), t2 as (
SELECT COUNT(DISTINCT t.equipment_specific_id)as value, t.system_ids FROM wl_equipment_specific_alarm t WHERE t.status = 1 GROUP BY t.system_ids
)
SELECT t1.*,SUM(IF(t2.VALUE > 0, 1, 0)) AS num from t1,t2 where FIND_IN_SET(t1.id, t2.system_ids) > 0 GROUP BY t1.code