Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Minggu kerja SQL di Oracle

Untuk kebutuhan Anda, Anda perlu menggunakan kombinasi IW dan WW format. Anda dapat menggabungkannya menggunakan CASE ekspresi.

Jika Anda ingin membuat daftar tanggal sepanjang tahun, Anda dapat menggunakan pembuat baris metode.

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.

CATATAN:

Nilai 15 untuk menghasilkan 15 baris dan tanggal dikodekan dengan keras di atas hanya untuk demonstrasi menggunakan klausa WITH karena OP tidak menyediakan kasus uji dengan membuat dan menyisipkan pernyataan. Pada kenyataannya, Anda perlu menggunakan nama tabel dan kolom Anda.



  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 10g:Bisakah panjang data CLOB kurang dari 4.000?

  2. Instalasi ROracle ::Tidak dapat memuat kesalahan objek bersama

  3. Bagaimana cara menginstal modul node-Oracledb pada AWS centos6 melalui baris perintah?

  4. Penggunaan Subquery Berkorelasi

  5. Prosedur PL/SQL:Bagaimana mengembalikan pernyataan pilih?