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

Oracleのすべての行に対して一連の月を生成します

    これでうまくいくはずです(with句は無視してください。物理的にテーブルを作成しなくても、tstテーブルを模倣しているだけです):

    with tst as (select 1 id, to_date('2014-02-15','yyyy-mm-dd') st_date, to_date('2014-07-01','yyyy-mm-dd') en_date from dual union all
                 select 2 id, to_date('2014-03-15','yyyy-mm-dd') st_date, to_date('2014-04-01','yyyy-mm-dd') en_date from dual)
    select id, add_months(trunc(st_date, 'month'), level -1) mnth
    from   tst
    connect by level <= months_between(trunc(en_date, 'mm'), trunc(st_date, 'mm')) + 1
               and prior id = id
               and prior dbms_random.value is not null;
    
            ID MNTH      
    ---------- ----------
             1 2014-02-01
             1 2014-03-01
             1 2014-04-01
             1 2014-05-01
             1 2014-06-01
             1 2014-07-01
             2 2014-03-01
             2 2014-04-01
    



    1. Windowsのコマンドプロンプトからmysqlクエリを実行できますか?

    2. ローカルホストに接続できませんが、SQLServer2008ではコンピューター名を使用できます

    3. SQLServerでINNERJOINを使用して複数のテーブルから削除するにはどうすればよいですか

    4. Rails:rake db:create:all(サーバーに接続できませんでした)