Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Pokaż dane z tabeli, nawet jeśli nie ma danych!! Wyrocznia

Po pierwsze, wygląda na to, że Twoja aplikacja skorzystałaby z tabeli kalendarza. Tabela kalendarza to lista dat i informacje o datach.

Po drugie, możesz to zrobić bez używania tabel tymczasowych. Oto podejście:

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

Oto pomysł. Stałe aliasów rejestrują najwcześniejszą datę w tabeli. Alias ​​daty tworzy następnie sekwencję dat. Podzapytanie wewnętrzne oblicza sekwencję liczb całkowitych przy użyciu rownum, a następnie dodaje je do pierwszej daty. Pamiętaj, że zakłada się, że masz średnio co najmniej jedną transakcję na dzień. Jeśli nie, możesz użyć większego stołu.

Ostatnią częścią jest sprzężenie, które służy do przywracania informacji o datach. Zwróć uwagę na użycie count(t.date) zamiast count(*). To zlicza liczbę rekordów w Twojej tabeli, która powinna wynosić 0 dla dat bez danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Connection String dla środowiska RAC?

  2. Jak zmusić funkcję w klauzuli where do jednorazowego wykonania w Oracle?

  3. Błąd bazy danych Oracle w symfony2 (doktryna). Czy parametr parameters.yml jest prawidłowo skonfigurowany?

  4. Jak wyraźniej wyświetlać dane tabeli w Oracle sqlplus?

  5. Sprawdź wiersze pod kątem monotonicznie rosnących wartości