Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Транспонирование строк  [new]
adar7
Member

Откуда:
Сообщений: 148
Здравствуйте уважаемые гуру!
Помогите мне провести транспонирование...Очень Вас прошу.

входные данные в строчке, разделяются чертой:
      with tab as (select 'SCR|GHT01254|NGT67' input from dual)
                        select input from tab

необходимо их транспонировать в столбцы.То есть получить такое:
       with tab as (select 'SCR' output from dual
                        union all select 'GHT01254' from dual
                        union all select 'NGT67'  from dual)
                        select * from tab
19 май 08, 15:15    [5683689]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование строк  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
pivot + substr|instr
19 май 08, 15:26    [5683791]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование строк  [new]
AndrewS
Member

Откуда: Минск
Сообщений: 487
STFF
19 май 08, 15:28    [5683805]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование строк  [new]
logmnr
Member

Откуда:
Сообщений: 69
FAQ рулит

транспониравние строк в столбцы
19 май 08, 15:30    [5683824]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование строк  [new]
профак
Guest
FAQ немного о другом
19 май 08, 17:13    [5684820]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование строк  [new]
профак
Guest
в FAQ, кстати, стоит сделать дополнение про стандартные pivot/unpivot в 11g
19 май 08, 17:15    [5684833]     Ответить | Цитировать Сообщить модератору
 Re: Транспонирование строк  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10045
SQL> with t as (
  2             select 'SCR|GHT01254|NGT67' str from dual union all
  3             select 'ABC|DEF' from dual union all
  4             select 'XYZ' from dual union all
  5             select '|' from dual union all
  6             select '||' from dual union all
  7             select '' from dual
  8            ),
  9      t1 as (
 10             select  str,
 11                     nvl(length(regexp_replace(str,'[^|]')),0) + 1 cnt,
 12                     row_number() over(order by str) rn
 13               from  t
 14            )
 15  select  ltrim(regexp_substr('|' || str,'\|[^|]*',1,level),'|') sub_str
 16    from  t1
 17    connect by prior rn = rn
 18           and prior dbms_random.value is not null
 19           and level <= cnt
 20  /

SUB_STR
-------------------
ABC
DEF
SCR
GHT01254
NGT67
XYZ






SUB_STR
-------------------


12 rows selected.

SQL> 

SY.
19 май 08, 17:50    [5685102]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить