आप उन्हें कैसे बनाना चाहते हैं, इस पर निर्भर करते हुए आप या तो एक कैलेंडर तालिका
बना सकते हैं। या Oracle connect by
का उपयोग करके गतिशील रूप से पंक्तियां उत्पन्न करें
वाक्य रचना।
with the_dates as (
select max(trunc(Create_Dtime)) as max_date
, min(trunc(Create_Dtime)) as min_date
from player
)
, generator as (
select min_date + level as the_date
from the_dates
connect by level <= max_date
)
select g.the_date, count(trunc(p.Create_Dtime))
from generator g
left outer join player p
on g.the_date = trunc(p.Create_Dtime)
group by g.the_date
order by g.the_date desc
यदि आप कैलेंडर तालिका विकल्प में नीचे जाते हैं तो यह थोड़ा साफ हो जाता है:
with the_dates as (
select max(trunc(Create_Dtime)) as max_date
, min(trunc(Create_Dtime)) as min_date
from player
)
select c.the_date, count(trunc(p.Create_Dtime))
from calender c
join the_dates td
on c.the_date between td.min_date and td.max_date
left outer join join player p
on c.the_date = trunc(p.Create_Dtime)
group by c.the_date
order by c.the_date
या, आपने अभी-अभी अपनी तिथि बाधाओं को देखा है:
with the_dates as (
select to_date('07-05-2012','dd-mm-yyyy') + level as the_date
from dual
connect by level <= trunc(to_date('07-05-2012','dd-mm-yyyy') - sysdate)
)
select td.the_date, count(trunc(p.create_dtime))
from the_dates td
left outer join player p
on td.the_date = trunc(p.create_dtime)
group by td.the_date
order by td.the_date
इन सभी के लिए मैं trunc(create_dtime)
. पर एक इंडेक्स की अनुशंसा करता हूं आपके player
. पर टेबल।