Oracle
 sql >> база данни >  >> RDS >> Oracle

Показване на данни от таблицата, дори ако няма данни!! Оракул

Първо, изглежда, че вашето приложение ще се възползва от таблица с календар. Календарната таблица е списък с дати и информация за датите.

Второ, можете да направите това без да използвате временни таблици. Ето подхода:

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

Ето идеята. Константите на псевдоними записват най-ранната дата във вашата таблица. След това псевдонимът дати създава поредица от дати. Вътрешната подзаявка изчислява поредица от цели числа, използвайки rownum, и след това ги добавя към първата дата. Имайте предвид, че това предполага, че имате средно поне една транзакция на дата. Ако не, можете да използвате по-голяма маса.

Последната част е съединението, което се използва за връщане на информация за датите. Обърнете внимание на използването на count(t.date) вместо count(*). Това отчита броя на записите във вашата таблица, който трябва да бъде 0 за дати без данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализирайте колона от същата таблица, ако има дублиращи се записи

  2. Oracle Order По различни колони един и същ оператор за избор

  3. PL/SQL:Грешка PLS-00306:грешен номер или типове аргументи при извикване към задействани за таблица с числа

  4. ORA-00907 Проблем с липсваща дясна скоба - изберете с ред чрез вътрешна заявка за вмъкване

  5. Oracle:Връща множество стойности във функция