クエリが複雑になりすぎています。groupbyを使用して、グループごとのカウントを取得してください。更新:4aテーブルと4bテーブルの両方に同じキーがあり、それらを1つの出力に要約する必要があるため、使用するサブクエリに応じて包括的な合計またはカウントが必要です
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
または、サブクエリで4aと4bをすべてユニオンと組み合わせて、tbhariテーブルで結合します。サブクエリには両方のテーブルのすべての行が含まれるため、サブクエリでcount()とgroupbyを使用できます。
ただし、サンプルコードを記述した方法では、テーブルを結合するときに既存のインデックスを利用できます。最初にそれらをunionと組み合わせてから結合を行うと、結合にインデックスは使用されません。