ऐसा लगता है कि आप ऐसा करने की कोशिश कर रहे हैं:
<स्ट्राइक> 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
स्ट्राइक>
संपादित करें:
<स्ट्राइक> 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
स्ट्राइक>
देखें SQL Fiddle with डेमो
# 2 संपादित करें, यदि आप लापता दिनों के लिए डेटा वापस करना चाहते हैं, तो मैं कैलेंडर तिथियों को शामिल करने के लिए एक तालिका बनाने की सलाह दूंगा, फिर आप उन दिनों के लिए डेटा वापस कर सकते हैं जो गायब हैं। आप जो खोज रहे हैं उसे निम्नलिखित वापस करना चाहिए। सावधान रहें, मैंने इस प्रश्न के लिए एक कैलेंडर तालिका बनाई है:
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
देखें SQL Fiddle with Demo
यदि आप अन्य तिथियों की परवाह नहीं करते हैं, तो आप इसे date
के बिना इस तरह से करेंगे टेबल:
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