सबसे पहले, ऐसा लगता है कि आपके एप्लिकेशन को कैलेंडर तालिका से लाभ होगा। कैलेंडर तालिका तिथियों की सूची और तिथियों के बारे में जानकारी है।
दूसरा, आप अस्थायी तालिकाओं का उपयोग किए बिना ऐसा कर सकते हैं। यह तरीका है:
with constants as (select min(thedate>) as firstdate from <table>)
dates as (select( <firstdate> + rownum - 1) as thedate
from (select rownum
from <table> cross join constants
where rownum < sysdate - <firstdate> + 1
) seq
)
select dates.thedate, count(t.date)
from dates left outer join
<table> t
on t.date = dates.thedate
group by dates.thedate
यहाँ विचार है। उपनाम स्थिरांक आपकी तालिका में सबसे प्रारंभिक तिथि रिकॉर्ड करता है। उपनाम तिथियां तब तिथियों का एक क्रम बनाती हैं। इनर सबक्वेरी, राउनम का उपयोग करके पूर्णांकों के अनुक्रम की गणना करती है, और फिर इन्हें पहली तारीख में जोड़ती है। ध्यान दें कि यह मानता है कि आपके पास प्रति दिन औसतन कम से कम एक लेनदेन है। यदि नहीं, तो आप एक बड़ी तालिका का उपयोग कर सकते हैं।
अंतिम भाग वह जुड़ाव है जिसका उपयोग तिथियों के बारे में जानकारी वापस लाने के लिए किया जाता है। गिनती (*) के बजाय गिनती (t.date) के उपयोग पर ध्यान दें। यह आपकी तालिका में रिकॉर्ड की संख्या की गणना करता है, जो बिना डेटा वाली तारीखों के लिए 0 होना चाहिए।