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

Откуда: Moscow
Сообщений: 45
Всем привет!
есть данные в виде:
поле1                  поле2
AFGANISTAN  	13,49
ALBANIA     	10,3
ALBANIA mob 	13,04
ALGERIA     	9
ALGERIA mob 	11
AMER SAMOA  	6,58

нужно преобраз. в вид
AFGANISTAN  	13,49
ALBANIA (mob) 	10,3/13,04
ALGERIA mob 	9/11
AMER SAMOA  	6,58
уж через что только не пробовал писать..
все просто вроде, но что-то никак:(

если у кого есть идеи, прошу помочь.

ps кстати сколько одновременно может быть открыто курсоров?
29 авг 08, 19:06    [6127141]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование двух строк в одну  [new]
Lecter
Member

Откуда: Киев
Сообщений: 2032
sanchezz
Всем привет!
есть данные в виде:
поле1                  поле2
AFGANISTAN  	13,49
ALBANIA     	10,3
ALBANIA mob 	13,04
ALGERIA     	9
ALGERIA mob 	11
AMER SAMOA  	6,58

нужно преобраз. в вид
AFGANISTAN  	13,49
ALBANIA (mob) 	10,3/13,04
ALGERIA mob 	9/11
AMER SAMOA  	6,58
уж через что только не пробовал писать..
все просто вроде, но что-то никак:(

если у кого есть идеи, прошу помочь.

ps кстати сколько одновременно может быть открыто курсоров?


SELECT pole1 || TO_CHAR(pole2) FROM mytable;
?
29 авг 08, 19:17    [6127174]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование двух строк в одну  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
sys_connect_by_path
29 авг 08, 19:18    [6127179]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование двух строк в одну  [new]
Denis Popov
Member

Откуда: Санкт-Петербург
Сообщений: 7862

with tab as (
       select 'AFGANISTAN'  f1, 13.49 f2 from DUAL union all
       select 'ALBANIA'     f1, 10.3  f2 from DUAL union all
       select 'ALBANIA mob' f1, 13.04 f2 from DUAL union all
       select 'ALGERIA'     f1, 9     f2 from DUAL union all
       select 'ALGERIA mob' f1, 11    f2 from DUAL union all
       select 'AMER SAMOA' f1,  6.58  f2 from DUAL
)
select tab.f1||case when tab2.f1 is not null then ' (mob)' end f1
      , tab.f2||case when tab2.f1 is not null then '/'||tab2.f2 end f2
from tab
      left join tab tab2 on tab2.f1 = tab.f1||' mob'
where tab.f1 not like '% mob'
order by f1;

Posted via ActualForum NNTP Server 1.4

29 авг 08, 19:24    [6127186]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование двух строк в одну  [new]
C#C++
Member [заблокирован]

Откуда: Суровые северные земли
Сообщений: 2636
with tab as (
       select 'AFGANISTAN'  f1, 13.49 f2 from DUAL union all
       select 'ALBANIA'     f1, 10.3  f2 from DUAL union all
       select 'ALBANIA mob' f1, 13.04 f2 from DUAL union all
       select 'ALGERIA'     f1, 9     f2 from DUAL union all
       select 'ALGERIA mob' f1, 11    f2 from DUAL union all
       select 'AMER SAMOA' f1,  6.58  f2 from DUAL
)

select 
  f1 || (case when lf1 = f1 || ' mob' then ' (mob)' else '' end) f1,
  f2 || (case when lf1 = f1 || ' mob' then '/' || lf2 else '' end) f2
from (
  select f1, lead(f1)over(order by f1) lf1, f2, lead(f2)over(order by f1) lf2
  from tab) t
where f1 not like '% mob'
29 авг 08, 19:39    [6127211]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование двух строк в одну  [new]
stax..
Guest
sanchezz
Всем привет!
есть данные в виде:
поле1                  поле2
AFGANISTAN  	13,49
ALBANIA     	10,3
ALBANIA mob 	13,04
ALGERIA     	9
ALGERIA mob 	11
AMER SAMOA  	6,58

нужно преобраз. в вид
AFGANISTAN  	13,49
ALBANIA (mob) 	10,3/13,04
ALGERIA mob 	9/11
AMER SAMOA  	6,58
уж через что только не пробовал писать..
все просто вроде, но что-то никак:(

если у кого есть идеи, прошу помочь.

ps кстати сколько одновременно может быть открыто курсоров?

почему ?
ALBANIA (mob) 10,3/13,04 -со скобками
ALGERIA mob 9/11 -без скобок

какая версия оракля?
.....
stax
30 авг 08, 12:11    [6128095]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование двух строк в одну  [new]
sanchezz
Member

Откуда: Moscow
Сообщений: 45
Все огромное спасибо!:) в частности C#C++, Denis Popov оч. интересные варианты решения..:)
1 сен 08, 12:52    [6131446]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить