Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / regexp_replace(listagg) - result of string concatenation is too long / 20 сообщений из 20, страница 1 из 1
05.12.2016, 16:16
    #39360628
kvitnitskiy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
Доброго времени суток господа.
есть запрос, в котором необходимо по s.shipid обьединить данные: ссумировать sum(o.ordqty) и в одну ячейку c.cstnam.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select
to_char(t.aptdat, 'dd.mm.yy hh24:mi') ,s.shipid,sum(o.ordqty),s.stgloc, c.cstnam
from
orddtl o ,trukio t ,ordhdr oo ,shphdr s,custmr c
where
s.shipid = oo.shipid and
oo.ordnum = o.ordnum and
s.shipid = t.shipid and
oo.plnnum = c.plnnum
group by
t.aptdat,
s.shipid,
s.stgloc,
c.cstnam
order by 1,2;



пробую через listagg - получаю ошибку - result of string concatenation is too long!
но если смотреть по s.shipid - 0027199679 значение c.cstnam должно получится - LOCAL CENTRAL WAREHOUSE CS DFNF ; TTRTR
...
Рейтинг: 0 / 0
05.12.2016, 16:19
    #39360632
kvitnitskiy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
...
Рейтинг: 0 / 0
05.12.2016, 16:29
    #39360643
Alex__kK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
kvitnitskiy,

И где тут listagg тобой упоминаемый? А вообще чудес не бывает, если говорит result of string concatenation is too long, так значит оно и есть
...
Рейтинг: 0 / 0
05.12.2016, 16:35
    #39360655
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
kvitnitskiy,

типатаво:
Код: plsql
1.
select to_char(substr(sys_xml_agg(xmlelement(col, id||',')).extract('/ROWSET/COL/text()')getclobval(), 1, 2000)) from tab
...
Рейтинг: 0 / 0
05.12.2016, 16:36
    #39360657
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
--Eugene--,

точку забыл :)
Код: plsql
1.
select to_char(substr(sys_xml_agg(xmlelement(col, id||',')).extract('/ROWSET/COL/text()').getclobval(), 1, 2000)) from tab
...
Рейтинг: 0 / 0
05.12.2016, 16:37
    #39360660
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
--Eugene--,

бл*
Код: plsql
1.
select to_char(substr(sys_xmlagg(xmlelement(col, id||',')).extract('/ROWSET/COL/text()').getclobval(), 1, 2000)) from tab
...
Рейтинг: 0 / 0
05.12.2016, 17:43
    #39360737
kvitnitskiy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
--Eugene--, спасибо, но как прикрутить к SQL выше ?
...
Рейтинг: 0 / 0
05.12.2016, 18:04
    #39360760
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
Вашу мать
еще один говнокодер..
Или кто вас так учит именовать объекты БД???!!
...
Рейтинг: 0 / 0
05.12.2016, 18:22
    #39360775
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
kvitnitskiyно как прикрутить к SQL выше ?

руками и головой
...
Рейтинг: 0 / 0
05.12.2016, 18:29
    #39360784
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
--Eugene--Вашу мать
еще один говнокодер..
Или кто вас так учит именовать объекты БД???!!
Объекты БД именуют архитекторы БД.
...
Рейтинг: 0 / 0
05.12.2016, 18:33
    #39360788
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
XMLer,

ГОВНО архитекторы, ты хотел сказать
...
Рейтинг: 0 / 0
05.12.2016, 19:34
    #39360843
kvitnitskiy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
env - Красава...
...
Рейтинг: 0 / 0
05.12.2016, 19:39
    #39360846
kvitnitskiy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
env - не хочеш помогать - сиди и не строй из себя умника, троль хренов. как будто сюда(на форум/ы) люди приходят таких как ты послушать/почитать, да таких вокруг и тут (по эту сторону монитора) хватает.
...
Рейтинг: 0 / 0
05.12.2016, 20:09
    #39360864
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
kvitnitskiyда таких вокруг и тут (по эту сторону монитора) хватает.
Что ж ты так про себя-то?

Открой доку по агрегатной функции sys_xmlagg, почитай параметры, посмотри, что и куда раскладывается в приведённом примере.
И получишь нужный тебе результат. Руками и головой.
...
Рейтинг: 0 / 0
05.12.2016, 20:13
    #39360867
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
kvitnitskiy,

разжевать что-ли надо?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with t as 
(
 select 1 id, 'таких' s from dual union all
 select 2 id, 'вокруг'  s from dual union all
 select 3 id, 'и тут' s from dual union all
 select 4 id, '(по эту сторону монитора)' s from dual union all
 select 5 id, 'хватает.' s from dual
)
select  to_char(substr(sys_xmlagg(xmlelement(col, s||' ')).extract('/ROWSET/COL/text()').getclobval(), 1, 2000)) ss
from t
...
Рейтинг: 0 / 0
06.12.2016, 04:25
    #39360951
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
envразжевать что-ли надо?


1. В реляционных таблицах нет порядка строк
2. Используй XMLCAST

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with t as 
(
 select 1 id, 'таких' s from dual union all
 select 2 id, 'вокруг'  s from dual union all
 select 3 id, 'и тут' s from dual union all
 select 4 id, '(по эту сторону монитора)' s from dual union all
 select 5 id, 'хватает.' s from dual
)
select  xmlcast(xmlagg(xmlelement(s,s,' ') order by id) as clob) list
  from  t
/



SY.
...
Рейтинг: 0 / 0
06.12.2016, 09:31
    #39360999
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
SY,

Это должен был быть следующий вопрос - про сортировку
...
Рейтинг: 0 / 0
06.12.2016, 09:34
    #39361001
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
SY,

Код: plsql
1.
select  xmlagg(xmlelement(s,s,' ') order by id).extract('/S/text()').getclobval() list
...
Рейтинг: 0 / 0
06.12.2016, 11:19
    #39361084
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
и вообще
у ТС изначально не стояло задачи сортировать записи при склейке их в одну строку
...
Рейтинг: 0 / 0
06.12.2016, 12:41
    #39361136
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
regexp_replace(listagg) - result of string concatenation is too long
--Eugene--и вообще
у ТС изначально не стояло задачи сортировать записи при склейке их в одну строку

ТС использовал LISTAGG который сортирует - хоть ты тресни:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SQL> with t as
  2  (
  3   select 1 id, 'Z' s from dual union all
  4   select 2 id, 'Y'  s from dual union all
  5   select 3 id, 'X' s from dual union all
  6   select 4 id, '(N)' s from dual union all
  7   select 5 id, 'A.' s from dual
  8  )
  9  select listagg(s,' ') within group(order by 1)
 10    from t
 11  /

LISTAGG(S,'')WITHINGROUP(ORDERBY1)
---------------------------------------------------
(N) A. X Y Z

SQL> 



Так что ORDER BY при замене LISTAGG на XMLAGG нужен для эквивалентности. Я использовал ORDER BY ID для передачи смысла послания. Для эквивалентности c ТС - ORDER BY s.

SY.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / regexp_replace(listagg) - result of string concatenation is too long / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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