Parece que você está tentando fazer isso:
select d.RepName,
count(d.RepName) DoctorReportsCount,
count(h.RepName) HospitalsReportsCount,
d.DateAdded
from doctorreports d
inner join hospitals h
on d.RepName = h.RepName
group by d.RepName, d.DateAdded
editar:
select *
from
(
select d.RepName,
count(d.RepName) DoctorReportsCount
, d.dateadded
from doctorreports d
group by d.RepName, d.dateadded
) d
left join
(
select h.RepName,
count(h.RepName) HospitalsReportsCount
, h.dateadded hDateadded
from hospitals h
group by h.RepName, h.dateadded
)h
on d.RepName = h.RepName
consulte SQL Fiddle com demonstração
edit #2, se você quiser retornar dados de dias que estão faltando, então eu aconselharia criar uma tabela para conter datas de calendário, então você pode retornar dados de dias que estão faltando. O seguinte deve retornar o que você está procurando. Esteja avisado, criei uma tabela de calendário para esta consulta:
select COALESCE(d.drep, '') repname,
COALESCE(d.DCount, 0) DoctorReportsCount,
COALESCE(h.HCount, 0) HospitalsReportsCount,
c.dt Dateadded
from calendar c
left join
(
select repname drep,
count(repname) DCount,
dateadded ddate
from doctorreports
group by repname, dateadded
) d
on c.dt = d.ddate
left join
(
select repname hrep,
count(repname) HCount,
dateadded hdate
from hospitals
group by repname, dateadded
) h
on c.dt = h.hdate
and d.drep = h.hrep
consulte SQL Fiddle with Demo
Se você não se importa com as outras datas, é assim que você faria sem uma
date
tabela:select COALESCE(d.RepName, '') repname,
COALESCE(d.DoctorReportsCount, 0) DoctorReportsCount,
COALESCE(h.HospitalsReportsCount, 0) HospitalsReportsCount,
COALESCE(p.PharmacyReportsCount, 0) PharmacyReportsCount,
d.dateadded Dateadded
from
(
select d.RepName,
count(d.RepName) DoctorReportsCount
, d.dateadded
from doctorreports d
group by d.RepName, d.dateadded
) d
left join
(
select h.RepName,
count(h.RepName) HospitalsReportsCount
, h.dateadded hDateadded
from hospitals h
group by h.RepName, h.dateadded
)h
on d.RepName = h.RepName
and d.dateadded = h.hDateadded
left join
(
select p.RepName,
count(p.RepName) PharmacyReportsCount
, p.dateadded hDateadded
from PharmacyReports p
group by p.RepName, p.dateadded
)p
on d.RepName = p.RepName
and d.dateadded = p.hDateadded