powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с запросом для вывода значений в строку
4 сообщений из 4, страница 1 из 1
Помогите с запросом для вывода значений в строку
    #39281683
Totally Mad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги,

Помогите пожалуйста с запросом. Есть задача вывести список коробок по заказу в строчку через точку с запятой.

Пример данных:

order number box 425099202 710960425099202 710961425099202 710962425099202 710963425100801 710964425100801 710965425100801 710966425100801 710967425200205 752590425200205 752591425200205 752592425200205 752593425200205 752594425200205 752595425200205 752596425200205 752597425200205 752598425200205 752546

Вот что должно получиться

order number box list 425099202 710960;710961;710962;710963425100801 710964;710965;710966;710967425200205 752590;752591;752592;752593;752594;752595;752596;752597;752598;752546

Попробовал через иерархические запросы, но никак не могу понять как привязать конкретный набор коробок к определенному заказу. Выводятся все короба без привязки к заказу

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
with data_example (order_number, box) as (
select '425099202','710960' from dual union all
select '425099202','710961' from dual union all
select '425099202','710962' from dual union all
select '425099202','710963' from dual union all
select '425100801','710964' from dual union all
select '425100801','710965' from dual union all
select '425100801','710966' from dual union all
select '425100801','710967' from dual union all
select '425200205','752590' from dual union all
select '425200205','752591' from dual union all
select '425200205','752592' from dual union all
select '425200205','752593' from dual union all
select '425200205','752594' from dual union all
select '425200205','752595' from dual union all
select '425200205','752596' from dual union all
select '425200205','752597' from dual union all
select '425200205','752598' from dual union all
select '425200205','752546' from dual 
 )
select distinct order_number, max(carton_list) keep (dense_rank last order by lvl) over () box_list 
from(select order_number, ltrim(sys_connect_by_path(id, ';'), ';') as carton_list, level as lvl
from (select distinct order_number, 
        box as id , 
        row_number() over (order by order_number) as num , 
        dense_rank() over (order by order_number) num2
   from data_example
  ) qry start with num2 = 1 connect by prior num + 1 = num )



Результат:

order box_list 425099202 710960;710961;710962;710963;710964;710965;710966;710967;752546;752590;752591;752592;752593;752594;752595;752596;752597;752598425200205 710960;710961;710962;710963;710964;710965;710966;710967;752546;752590;752591;752592;752593;752594;752595;752596;752597;752598425100801 710960;710961;710962;710963;710964;710965;710966;710967;752546;752590;752591;752592;752593;752594;752595;752596;752597;752598

Огромное спасибо за помощь,
...
Рейтинг: 0 / 0
Помогите с запросом для вывода значений в строку
    #39281686
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM/STFF LISTAGG
...
Рейтинг: 0 / 0
Помогите с запросом для вывода значений в строку
    #39281689
Totally Mad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicRTFM/STFF LISTAGG

Супер, спасибо вам большое!

Сделал так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
with data_example (order_number, box) as (
select '425099202','710960' from dual union all
select '425099202','710961' from dual union all
select '425099202','710962' from dual union all
select '425099202','710963' from dual union all
select '425100801','710964' from dual union all
select '425100801','710965' from dual union all
select '425100801','710966' from dual union all
select '425100801','710967' from dual union all
select '425200205','752590' from dual union all
select '425200205','752591' from dual union all
select '425200205','752592' from dual union all
select '425200205','752593' from dual union all
select '425200205','752594' from dual union all
select '425200205','752595' from dual union all
select '425200205','752596' from dual union all
select '425200205','752597' from dual union all
select '425200205','752598' from dual union all
select '425200205','752546' from dual 
 )
select distinct order_number,listagg(box, ', ') 
            WITHIN GROUP(order by order_number) over(partition by order_number) as ename_list from data_example



Вывод как и было необходимо:

order box_list 425099202710960;710963;710962;710961425100801710967;710966;710965;710964425200205752598;752597;752596;752595;752594;752593;752592;752591;752546;752590
...
Рейтинг: 0 / 0
Помогите с запросом для вывода значений в строку
    #39281717
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Totally MadСуперА что тебе мешало хотя бы бегло ознакомиться с перечнем функций ?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите с запросом для вывода значений в строку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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