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

Cách phân vùng theo tháng và nhóm các tháng trong một quý

Vấn đề với giải pháp bạn đã thử là bạn đang thiếu một bước.

Nếu các quý của bạn lệch một tháng so với các quý "tiêu chuẩn", thì - đã cho một ngày, bất kỳ ngày nào - bạn phải dời ngày về phía trước một tháng, sau đó cắt ngắn đến quý và sau đó kéo lại một tháng. Bạn đã thực hiện bước 2 và 3 nhưng thiếu bước 1.

with
  inputs ( dt ) as (
    select to_date('02-Jan-18', 'dd-Mon-yy') from dual union all
    select to_date('02-Feb-18', 'dd-Mon-yy') from dual union all
    select to_date('05-Mar-18', 'dd-Mon-yy') from dual union all
    select to_date('08-Apr-18', 'dd-Mon-yy') from dual union all
    select to_date('05-May-18', 'dd-Mon-yy') from dual union all
    select to_date('05-Jun-18', 'dd-Mon-yy') from dual union all
    select to_date('05-Jul-18', 'dd-Mon-yy') from dual union all
    select to_date('09-Aug-18', 'dd-Mon-yy') from dual union all
    select to_date('10-Sep-18', 'dd-Mon-yy') from dual union all
    select to_date('11-Oct-18', 'dd-Mon-yy') from dual union all
    select to_date('11-Nov-18', 'dd-Mon-yy') from dual union all
    select to_date('11-Dec-18', 'dd-Mon-yy') from dual
  )
select dt,
       add_months(trunc(add_months(dt, 1), 'q'), -1) as qtr
from   inputs;

DT          QTR     
---------   ---------
02-Jan-18   01-Dec-17
02-Feb-18   01-Dec-17
05-Mar-18   01-Mar-18
08-Apr-18   01-Mar-18
05-May-18   01-Mar-18
05-Jun-18   01-Jun-18
05-Jul-18   01-Jun-18
09-Aug-18   01-Jun-18
10-Sep-18   01-Sep-18
11-Oct-18   01-Sep-18
11-Nov-18   01-Sep-18
11-Dec-18   01-Dec-18


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SSIS:Oracle Nhiều hàng cho một đầu ra cột mà không có STRAGG

  2. Đang cố gắng cấu trúc lại truy vấn đệ quy trong Oracle CTE?

  3. Các thủ tục được lưu trữ của Oracle, SYS_REFCURSOR và NHibernate

  4. Làm thế nào để phân tích cú pháp chuỗi được phân cách bằng dấu phẩy trong PL / SQL?

  5. Hàm NVL2 trong Oracle