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

Tạo nhiều hàng từ một hàng dựa trên ngày tháng

Chúng ta có thể thử sử dụng bảng lịch tại đây, bao gồm tất cả các ngày bắt đầu của tháng có thể xuất hiện trong kết quả mong đợi:

with calendar as (
    select '2017-09-01'::date as dt union all
    select '2017-10-01'::date union all
    select '2017-11-01'::date union all
    select '2017-12-01'::date union all
    select '2018-01-01'::date union all
    select '2018-02-01'::date union all
    select '2018-03-01'::date union all
    select '2018-04-01'::date union all
    select '2018-05-01'::date union all
    select '2018-06-01'::date union all
    select '2018-07-01'::date union all
    select '2018-08-01'::date
)

select
    t.id as subscription_id,
    c.dt,
    t.amount_monthly
from calendar c
inner join your_table t
    on c.dt >= t.start_date and
       c.dt < t.start_date + (t.month_count::text || ' month')::interval
order by
    t.id,
    c.dt;

Bản trình diễn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chạy tập lệnh sau điểm nhập vùng chứa trong docker-soạn

  2. Khối mã ẩn danh PL / pgSQL

  3. Hội thảo trên web:Ngân hàng trên Postgres - Cân nhắc Ứng dụng Tài chính [Theo dõi]

  4. pgAdmin III:Không có máy chủ nào hiển thị

  5. Làm thế nào để bạn viết một truy vấn không phân biệt chữ hoa chữ thường cho cả MySQL và Postgres?