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

Truy vấn SQL của Oracle - tạo bản ghi giữa hai ngày

Đây là một cách để làm điều này. Nó giả định tất cả các ngày đều là ngày thuần túy (không có thành phần thời gian trong ngày - trên thực tế có nghĩa là thời gian trong ngày là 00:00:00 ở mọi nơi). Nó cũng giả định rằng bạn muốn đầu ra bao gồm tất cả các ngày từ ngày đầu tiên đến ngày cuối cùng trong đầu vào.

Ngày đầu tiên và ngày cuối cùng được tính trong truy vấn trong cùng. Sau đó, tất cả các ngày giữa chúng được tạo bằng truy vấn phân cấp (kết nối theo) và kết quả được nối trái với dữ liệu ban đầu. Sau đó, kết quả thu được bằng cách sử dụng last_value() phân tích hàm với ignore nulls tùy chọn.

with
     inputs ( dt, value ) as (
       select to_date('8/1/2017', 'mm/dd/yyyy'), 'x' from dual union all
       select to_date('8/5/2017', 'mm/dd/yyyy'), 'b' from dual union all
       select to_date('8/7/2017', 'mm/dd/yyyy'), 'a' from dual
     )
-- End of simulated input data (for testing purposes only, not part of the solution).
-- Use your actual table and column names in the SQL query that begins below this line.
select dt, last_value(value ignore nulls) over (order by dt) as value
from   ( select f.dt, i.value
         from   ( select min_dt + level - 1 as dt
                  from   ( select max(dt) as max_dt, min(dt) as min_dt
                           from   inputs
                         )
                  connect by level <= max_dt - min_dt + 1
                ) f
                left outer join inputs i on f.dt = i.dt
       )
;

DT          VALUE
----------  -----
2017-08-01  x
2017-08-02  x
2017-08-03  x
2017-08-04  x
2017-08-05  b
2017-08-06  b
2017-08-07  a



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01792:số cột tối đa trong bảng hoặc chế độ xem là 1000 lỗi khi sử dụng WITH trong sql

  2. Bộ điều hợp mạng không thể thiết lập kết nối khi kết nối với Oracle DB

  3. Không thể tải tệp hoặc lắp ráp 'Oracle.DataAccess, Phiên bản =4.112.4.0, Văn hóa =trung lập, PublicKeyToken =89b483f429c47342'

  4. Làm thế nào để tải tệp phẳng với các cột động có kiểu dữ liệu khác nhau vào cơ sở dữ liệu oracle?

  5. Tương đương với SQL Server ÁP DỤNG trong Oracle là gì?