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

Interupsi periode yang sama di akhir bulan

Anda dapat menghitung angka "periode" dengan kueri rekursif, sebagai berikut.

Seperti yang diungkapkan dalam komentar di bawah pertanyaan Anda, saya tidak begitu mengerti apa yang Anda maksud dengan kolom "minggu" (dan saya menduga mungkin definisi Anda sebenarnya tidak konsisten - terserah Anda untuk mengklarifikasi).

with
  r (plan, period, max_periods, start_date) as (
    select  plan, 1, max_periods, start_date
      from  table_1
    union all
    select  plan, period + 1, max_periods,
            least(start_date + 7, add_months(trunc(start_date, 'mm'), 1))
      from  r
      where period < max_periods
  )
select plan, period, start_date
from   r
;

PLAN     PERIOD START_DATE
---- ---------- ----------
A             1 2020-05-01
A             2 2020-05-08
A             3 2020-05-15
A             4 2020-05-22
A             5 2020-05-29
A             6 2020-06-01
A             7 2020-06-08
A             8 2020-06-15
A             9 2020-06-22
A            10 2020-06-29
A            11 2020-07-01
A            12 2020-07-08

Ini didasarkan pada periode maksimum dari TABLE_1, dan saya tidak menggunakan TABLE_2 sama sekali. Anda dapat menggabungkan dua tabel setelah Anda membuat kumpulan hasil ini dari TABLE_1 saja, atau menyesuaikan pendekatan sesuai kebutuhan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. memperbarui kolom stempel waktu dengan stempel waktu yang berisi 'T'

  2. Bagaimana cara menampilkan konten lengkap kolom LOB di Oracle SQL*Plus?

  3. ORA-00913:terlalu banyak nilai saat menggunakan case when

  4. Indeks partisi Oracle

  5. Apa tabel ganda di Oracle?