Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hiển thị dữ liệu từ bảng ngay cả khi không có dữ liệu !! Oracle

Đầu tiên, có vẻ như ứng dụng của bạn sẽ được hưởng lợi từ một bảng lịch. Bảng lịch là danh sách các ngày và thông tin về các ngày.

Thứ hai, bạn có thể làm điều này mà không cần sử dụng các bảng tạm thời. Đây là cách tiếp cận:

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

Đây là ý tưởng. Hằng số bí danh ghi lại ngày sớm nhất trong bảng của bạn. Sau đó, bí danh ngày tháng tạo ra một chuỗi ngày tháng. Truy vấn con bên trong tính toán một chuỗi các số nguyên, sử dụng rownum, sau đó thêm chúng vào ngày đầu tiên. Lưu ý rằng điều này giả định rằng trung bình bạn có ít nhất một giao dịch mỗi ngày. Nếu không, bạn có thể sử dụng một bảng lớn hơn.

Phần cuối cùng là phép nối được sử dụng để đưa lại thông tin về ngày tháng. Lưu ý việc sử dụng count (t.date) thay vì count (*). Điều này đếm số lượng bản ghi trong bảng của bạn, sẽ là 0 cho các ngày không có dữ liệu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Số lượng bản ghi trong câu lệnh chèn (Oracle)

  2. sắp xếp các chuỗi chữ số trong Oracle 11g

  3. Trả về một bảng trong một hàm PL / SQL

  4. cách chia các cột theo kết quả của truy vấn trong cơ sở dữ liệu oracle

  5. Sử dụng dịch vụ web và chèn CLOB bằng Node.js vào bảng Cơ sở dữ liệu Oracle