2016-09-28 109 views
2

表如下:拆分字符以多行甲骨文


YEAR | MONTH |   HOLIDAY   | 
2015 | 10 | #  #  # ###  | 
2015 | 11 | #  #  #  #  # | 

我想創建以下文件:


YEAR | MONTH | DATE | VALUE | 
2015 | 10 | 01 | # | 
2015 | 10 | 02 |   | 
2015 | 10 | 03 |   | 
2015 | 10 | 04 | # | 

       UNTIL 
2016 | 11 | 30 | # | 

我看到周圍堆了幾個解決方案,但它couldn」 t工作
任何幫助將大大升值

+1

這看起來像你想使用'UNPIVOT',但確切的答案是不可能的,因爲你用'#'替換了你的實際數據。 –

回答

3

嗯,我不知道你爲什麼要去11月31日,一個不存在的日期。但是,這裏有一個想法:

with n as (
     select level as n 
     from dual 
     connect by level <= 31 
    ) 
select t.year, t.month, n.n as day, 
     substr(t.holidays, n.n, 1) as holiday 
from t join 
    n 
    on n.n <= length(t.holiday); 
+0

對不起,這是我的壞,直到11月30日 其實每個月的假期列的長度=該月的長度日期 – user3863074

+0

@ user3863074。 。 。我想到了這一點,這就是爲什麼我在答案中使用它。 –

+0

它的工作!非常感謝 – user3863074