Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Объединение с помощью Xquery нескольких записей в строку / 8 сообщений из 8, страница 1 из 1
10.08.2017, 08:52
    #39503063
admontes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение с помощью Xquery нескольких записей в строку
Добрый день.

Есть собственно следующий запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select e.first, e.last, p.phone  
from XMLTABLE('/employee'   
              PASSING XMLTYPE('  
                                  <employee>  
                                      <first>Илья</first>  
                                      <last>Муромец</last>  
                                      <office>хижина</office>  
                                      <phone>02</phone>  
                                      <phone>911</phone>  
                                  </employee>  
                              ')     
              COLUMNS  
                      first     VARCHAR2(25) PATH 'first',  
                      last      VARCHAR2(25) PATH 'last',  
                      phone_xml XMLTYPE      PATH 'phone'
                      ) AS e,  
     XMLTable('/phone'  
              PASSING e.phone_xml  
              COLUMNS  
                      phone     VARCHAR2(12) PATH '.') AS p;  



Результатом будет не нормализованный вывод из 2-х строк, с повторяющимися значениями полями: first, last и разным значением в поле phone.
Подскажите, можно ли с помощью, всей мощи Oracle и XQuery, вывести данные одной строчкой с объединением значений поля phone?
...
Рейтинг: 0 / 0
10.08.2017, 09:08
    #39503073
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение с помощью Xquery нескольких записей в строку
admontes,

group by + listagg?
...
Рейтинг: 0 / 0
10.08.2017, 09:21
    #39503081
admontes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение с помощью Xquery нескольких записей в строку
env,

Да это сработает, спасибо, но хотелось бы более кошерный вариант, не выпадая из контекста XQuery. ))
...
Рейтинг: 0 / 0
10.08.2017, 09:30
    #39503096
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение с помощью Xquery нескольких записей в строку
admontes,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
select e.* 
from XMLTABLE('for $i in /employee 
                 let $j := $i/phone
               return <r>{$i/first}{$i/last}<phones>{string-join($j,",")}</phones></r>'
              PASSING XMLTYPE('  
                                  <employee>  
                                      <first>Илья</first>  
                                      <last>Муромец</last>  
                                      <office>хижина</office>  
                                      <phone>02</phone>  
                                      <phone>911</phone>  
                                  </employee>  
                              ')     
              COLUMNS  
                      first     VARCHAR2(25)  PATH 'first',  
                      last      VARCHAR2(25)  PATH 'last',  
                      phone_xml VARCHAR2(100) PATH 'phones'
                      ) AS e;  



FLOWR
...
Рейтинг: 0 / 0
10.08.2017, 09:30
    #39503097
Азагаш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение с помощью Xquery нескольких записей в строку
admontes,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select e.first, e.last, e.phone_str  
from XMLTABLE('/employee'   
              PASSING XMLTYPE('  
                                  <employee>  
                                      <first>Илья</first>  
                                      <last>Муромец</last>  
                                      <office>хижина</office>  
                                      <phone>02</phone>  
                                      <phone>911</phone>  
                                  </employee>  
                              ')     
              COLUMNS  
                      first     VARCHAR2(25) PATH 'first',  
                      last      VARCHAR2(25) PATH 'last',  
                      phone_str VARCHAR2(25) path 'string-join(phone,", ")') AS e
...
Рейтинг: 0 / 0
10.08.2017, 09:32
    #39503100
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение с помощью Xquery нескольких записей в строку
admontes,

Ссылку забыл

FLOWR
...
Рейтинг: 0 / 0
10.08.2017, 09:33
    #39503102
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение с помощью Xquery нескольких записей в строку
Азагаш,

Да, согласен, так покороче будет.
...
Рейтинг: 0 / 0
10.08.2017, 09:57
    #39503135
admontes
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение с помощью Xquery нескольких записей в строку
Азагаш, Env

Ребята, спасибо! С меня пиво!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Объединение с помощью Xquery нескольких записей в строку / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]