В вашем запросе было несколько опечаток. Я изменил его и добавил оператор WITH, чтобы я мог использовать примеры данных. Результаты выглядят хорошо.
with T1 (mydate, flag, status, counts) as (select trunc(sysdate), 'Cat1', 1, '100'
from dual),
T2 (mydate, flag, status, counts) as (select trunc(sysdate), 'Cat1', 1, '50'
from dual)
Select
T1.mydate,
T1.flag,
T1.status,
T1.counts T1Count,
T2.counts T2Count,
(T1.counts-T2.counts)as difference
From T1
left join T2
On T1.mydate=T2.mydate
And T1.flag=T2.flag
And T1.status=T2.status