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

Tuần làm việc SQL trong Oracle

Đối với yêu cầu của bạn, bạn cần sử dụng kết hợp IWWW định dạng. Bạn có thể kết hợp chúng bằng cách sử dụng CASE biểu thức.

Nếu bạn muốn tạo danh sách ngày cho cả năm, thì bạn có thể sử dụng trình tạo hàng phương pháp.

SQL> WITH sample_data AS(
  2  SELECT DATE '2015-12-28'    + LEVEL -1 dt FROM dual
  3  CONNECT BY LEVEL <= 15
  4  )
  5  -- end of sample_data mimicking real table
  6  SELECT dt,
  7    TO_CHAR(dt, 'DY') DAY,
  8    NVL(
  9    CASE
 10      WHEN dt < DATE '2016-01-01'
 11      THEN TO_CHAR(dt, 'IW')
 12      WHEN dt >= next_day(TRUNC(DATE '2016-01-01', 'YYYY') - 1, 'Monday')
 13      THEN TO_CHAR(dt                                      +7, 'IW')
 14    END, '01') week_number
 15  FROM sample_data;

DT         DAY WEEK_NUMBER
---------- --- -----------
2015-12-28 MON 53
2015-12-29 TUE 53
2015-12-30 WED 53
2015-12-31 THU 53
2016-01-01 FRI 01
2016-01-02 SAT 01
2016-01-03 SUN 01
2016-01-04 MON 02
2016-01-05 TUE 02
2016-01-06 WED 02
2016-01-07 THU 02
2016-01-08 FRI 02
2016-01-09 SAT 02
2016-01-10 SUN 02
2016-01-11 MON 03

15 rows selected.

LƯU Ý:

Giá trị 15 để tạo ra 15 hàng và ngày tháng được mã hóa cứng ở trên chỉ để trình diễn bằng mệnh đề WITH vì OP không cung cấp trường hợp thử nghiệm với các câu lệnh tạo và chèn. Trên thực tế, bạn cần sử dụng tên bảng và cột của mình.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn Oracle để biết chi tiết lỗi mã ORA

  2. 19.3 PDB Đóng ORA-65107 ORA-16078

  3. Chuyển đổi Dấu thời gian Unix thành Giá trị ngày tháng trong Oracle

  4. Quản lý doanh nghiệp Điều khiển FMW 11g trong R12.2

  5. Triển khai trang web ASP.NET với ODP.NET