sql >> Databasteknik >  >> RDS >> Oracle

Visa data från tabell även om det inte finns några data!! Orakel

För det första låter det som att din ansökan skulle ha nytta av en kalendertabell. En kalendertabell är en lista över datum och information om datumen.

För det andra kan du göra detta utan att använda tillfälliga tabeller. Här är tillvägagångssättet:

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

Här är idén. Aliaskonstanterna registrerar det tidigaste datumet i din tabell. Aliasdatum skapar sedan en sekvens av datum. Den inre underfrågan beräknar en sekvens av heltal, med hjälp av rownum, och lägger sedan till dessa till det första datumet. Observera att detta förutsätter att du i genomsnitt har minst en transaktion per datum. Om inte kan du använda ett större bord.

Den sista delen är sammanfogningen som används för att få tillbaka information om datumen. Notera användningen av count(t.date) istället för count(*). Detta räknar antalet poster i din tabell, vilket bör vara 0 för datum utan data.



  1. Hur man lagrar python-ordbok i mysql DB via python

  2. Hur man uppdaterar med inre join i Oracle

  3. MySQL Connection Timeout Problem - Grails Application på Tomcat med Hibernate och ORM

  4. Hur man korrekt anropar fnd_concurrent.wait_for_request lagrad funktion via cx_Oracle module API?