2016-09-28 5 views
2

таблица выглядит следующим образом:Расщепление символ на несколько строк в Oracle


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 | # | 

Я видел несколько решений вокруг стека, но он не мог» t work
Любая помощь была бы очень признательна

+1

Похоже, вы хотите использовать 'UNPIVOT', но точный ответ невозможен, потому что вы заменили свои фактические данные на' # '. –

ответ

3

Ну, я не уверен, почему вы хотели бы отправиться на 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

Извините, это было плохо, до 30 ноября Фактически длина праздничной колонки в каждом месяце = длина даты этого месяца – user3863074

+0

@ user3863074. , , Я понял, что именно поэтому я использую это в своем ответе. –

+0

Это работает! Спасибо большое – user3863074