sql >> データベース >  >> RDS >> PostgreSQL

日付に基づいて単一の行から複数​​の行を生成する

    ここでカレンダーテーブルを使用してみることができます。このテーブルには、予想される出力に表示される可能性のあるすべての月の開始日が含まれています。

    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;
    

    デモ



    1. PostreSQLを使用してWebサイトを構築するためにどのCMSを使用する必要がありますか、最新のWordPressを使用できますか

    2. SQL Server sp_msforeachtableを使用して、特定の条件を満たすテーブルのみを選択します

    3. MySQLの各行を個別のDIVに表示します

    4. 2つのMySQLダンプの違いを確認するにはどうすればよいですか?