2012-02-27 8 views
2

ここで、fromとtoは複数の年にわたる2つの日付ですが、私はそのテーブルでselectテーブルtの各時間枠は、その期間内の月/年リストを返します。 E.G.テーブルtの内容は次のようになります。オラクルは時間枠の外に月を選択します

id  from    to 
1  01.10.2011   28.02.2012 
2  01.06.2008   30.09.2008 

select文は、年にID、月の数を返す必要があり、年:

1 10 2011 
1 11 2011 
1 12 2011 
1 01 2012 
1 02 2012 
2 06 2008 
2 07 2008 
2 08 2008 
2 09 2008 

私はこれを行うことができますどのように任意のアイデア? ありがとうございました!

答えて

3

あなたはrow generatorを使用する必要があります。

select 
    id, 
    ADD_MONTHS("from", N.N), 
    to_char(dt_column, 'mm') , 
    to_char(dt_column, 'yyyy') 
from 
    yourTable t 
inner join 
    (SELECT ROWNUM n 
    FROM (SELECT 1 just_a_column 
     FROM dual 
     CONNECT BY LEVEL <= 365 
) N 
    on ADD_MONTHS("from", N.N) <= last_day(t."to") 
+0

ありがとう@danihp – maephisto

1

考えられる最も単純な考え方は、可能な時間枠にまたがる月に1つの日付を持つ行を持つ小さな表を作成することです。

2つの間に日付が必要な場所に参加できます。

もう1つの方法は、「接続者」と再帰的なクエリを調べることです。しかし、いくつかの学習を取る。

関連する問題