powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle 10g, wm_concat, сортировка
8 сообщений из 8, страница 1 из 1
Oracle 10g, wm_concat, сортировка
    #40001987
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой код:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select CUSTOMER_ID, wm_concat(TARIFF_ID) as LIST
from
(
select distinct S.CUSTOMER_ID, S.TARIFF_ID
from B24_QUEUE Q
join SERVICES S on (S.CUSTOMER_ID = Q.CLIENT_ID and S.STATUS in (1,-1,10))
order by S.CUSTOMER_ID, S.TARIFF_ID
)
group by CUSTOMER_ID



Но не смотря попытки схитрить (подзапрос с сортировкой), в LIST записи все равно иногда не упорядочены.
Есть ли еще способы для wm_concat задать порядок значений?
Или только на клиенте сортировать?
...
Рейтинг: 0 / 0
Oracle 10g, wm_concat, сортировка
    #40001993
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Oracle 10g, wm_concat, сортировка
    #40001994
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

Перейти на сопровождаемую версию, где есть listagg?
...
Рейтинг: 0 / 0
Oracle 10g, wm_concat, сортировка
    #40002025
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обновить СУБД возможности нет.

Понятно. Значит нужно будет обрабатывать на клиенте.
...
Рейтинг: 0 / 0
Oracle 10g, wm_concat, сортировка
    #40002045
Les
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут был еще вариант, через курсор
https://oracle-base.com/articles/misc/string-aggregation-techniques

На всякий случай учти, что если будете переходить на 11 версию, то тип данных для wm_concat изменится
...
Рейтинг: 0 / 0
Oracle 10g, wm_concat, сортировка
    #40002057
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

Код: plsql
1.
2.
3.
4.
5.
6.
--https://docs.oracle.com/cd/B14117_01/server.101/b10759/functions200.htm#sthref2022
with t as (select 'a' s, 2 ord from dual union all select 'b', 1 from dual)
select
     rtrim(extract(xmlagg(xmlelement(z, t.s ||',') order by t.ord),'Z/text()').getClobVal(),',') x
from
    t;
...
Рейтинг: 0 / 0
Oracle 10g, wm_concat, сортировка
    #40002063
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ух ты, у меня xmlagg есть.
Я думал, что это для версии 11 и старше.
Спасибо, так работает.
...
Рейтинг: 0 / 0
Oracle 10g, wm_concat, сортировка
    #40002118
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

Не забываем что в общем случае:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
with t as (select '>' s, 2 ord from dual union all select '<', 1 from dual)
select
     rtrim(extract(xmlagg(xmlelement(z, t.s ||',') order by t.ord),'Z/text()').getClobVal(),',') x
from
    t
/

X
----------
&lt;,&gt;

with t as (select '>' s, 2 ord from dual union all select '<', 1 from dual)
select
     dbms_xmlgen.convert(rtrim(extract(xmlagg(xmlelement(z, t.s ||',') order by t.ord),'Z/text()').getClobVal(),','),1) x
from
    t
/

X
-----
<,>



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


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