Zkomplikovali jste svůj dotaz, stačí použít group by k získání počtů podle skupin. Aktualizace:protože máte stejné klíče v tabulkách 4a i 4b a chcete je shrnout do jednoho výstupu, potřebujete celkový součet nebo počet v závislosti na použitém poddotazu
select kd_hari, hari, sum(rowcount) as rowcount from
(select a.kd_hari,hari, count(a.kd_hari) as rowcount
from 4a a,tbhari h where a.kd_hari=h.kd_hari and kd_ruang in('L','P')
group by a.kd_hari,hari
union all
select b.kd_hari,hari, count(b.kd_hari)
from 4b a,tbhari h where a.kd_hari=h.kd_hari and kd_ruang in('L','P')
group by a.kd_hari,hari) as t
group by kd_hari,hari
Případně zkombinujte 4a a 4b se sjednocením vše v poddotazu a připojte to v tabulce tbhari a můžete použít count() s group by na poddotaz, protože poddotaz bude zahrnovat všechny řádky z obou tabulek.
Nicméně, jak jsem napsal ukázkový kód, můžete využít stávající indexy při spojování tabulek. Pokud je nejprve zkombinujete se sjednocením a poté provedete spojení, nebudou pro spojení použity žádné indexy.