Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Аналог LISTAGG / 13 сообщений из 13, страница 1 из 1
20.11.2017, 10:03
    #39555969
Goofy122
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог LISTAGG
Поскажите пожалуйста функцию подобную LISTAGG , без использования GROUP BY или как можно собрать данные все в одну строку ?
...
Рейтинг: 0 / 0
20.11.2017, 10:07
    #39555970
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог LISTAGG
Goofy122Поскажите пожалуйста функцию подобную LISTAGG , без использования GROUP BY или как можно собрать данные все в одну строку ? ТОП №14
...
Рейтинг: 0 / 0
20.11.2017, 10:13
    #39555973
Аналог LISTAGG
Goofy122как можно собрать данные все в одну строку ?|| не требует group by
...
Рейтинг: 0 / 0
20.11.2017, 11:50
    #39556049
Connect_by
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог LISTAGG
Можешь попробовать connect by на самого себя с sys_connect_by_path, если не ошибся в названии функции.
...
Рейтинг: 0 / 0
20.11.2017, 12:19
    #39556072
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог LISTAGG
Goofy122Поскажите пожалуйста функцию подобную LISTAGG , без использования GROUP BY или как можно собрать данные все в одну строку ?

или так
Код: sql
1.
2.
3.
SELECT listagg(ROWNUM, ', ') WITHIN GROUP(ORDER BY ROWNUM) OVER()
  FROM dual
  connect BY ROWNUM < 11



или так
Код: sql
1.
2.
3.
SELECT listagg(ROWNUM, ', ') WITHIN GROUP(ORDER BY ROWNUM)
  FROM dual
  connect BY ROWNUM < 11


в зависимости от того, что тебе надо
...
Рейтинг: 0 / 0
20.11.2017, 12:45
    #39556087
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог LISTAGG
Goofy122,

поясните на примере что надо?

для ф-ции listagg group by не нужен
Код: plsql
1.
2.
3.
4.
5.
6.
7.
  1  select listagg(dname, ',') within group(order by null) d_list
  2* from dept
SQL> /

D_LIST
--------------------------------------------------------------------
ACCOUNTING,OPERATIONS,RESEARCH,SALES



.....
stax
...
Рейтинг: 0 / 0
20.11.2017, 13:08
    #39556115
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог LISTAGG
StaxGoofy122,

поясните на примере что надо?

для ф-ции listagg group by не нужен
Код: plsql
1.
2.
3.
4.
5.
6.
7.
  1  select listagg(dname, ',') within group(order by null) d_list
  2* from dept
SQL> /

D_LIST
--------------------------------------------------------------------
ACCOUNTING,OPERATIONS,RESEARCH,SALES




.....
staxу тебя ж тут есть
неявный
...
Рейтинг: 0 / 0
20.11.2017, 13:37
    #39556146
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог LISTAGG
andreymxу тебя ж тут есть
неявный
нюансы терминологии

в зависимости есть, или нет group by select ведет себя по разному

поетому для себя считаю что group by нет в тч неявного

.....
stax
...
Рейтинг: 0 / 0
20.11.2017, 16:30
    #39556298
Goofy122
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог LISTAGG
andreymxGoofy122Поскажите пожалуйста функцию подобную LISTAGG , без использования GROUP BY или как можно собрать данные все в одну строку ?

или так
Код: sql
1.
2.
3.
SELECT listagg(ROWNUM, ', ') WITHIN GROUP(ORDER BY ROWNUM) OVER()
  FROM dual
  connect BY ROWNUM < 11



или так
Код: sql
1.
2.
3.
SELECT listagg(ROWNUM, ', ') WITHIN GROUP(ORDER BY ROWNUM)
  FROM dual
  connect BY ROWNUM < 11


в зависимости от того, что тебе надо

Код: plsql
1.
2.
3.
SELECT dummy ,  listagg(ROWNUM, ', ') WITHIN GROUP(ORDER BY ROWNUM)
  FROM dual
  connect BY ROWNUM < 11



а если добавит еще одну колонку , требует включить в group by.
A с over() в конце работает только с dual стоит подключить другую таблицу выдает ошибку
ORA-01489: result of string concatenation is too long
...
Рейтинг: 0 / 0
21.11.2017, 02:02
    #39556489
Bobby Z.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог LISTAGG
Goofy122A с over() в конце работает только с dual стоит подключить другую таблицу выдает ошибку
ORA-01489: result of string concatenation is too longА это оттого, что VARCHAR2 имеет ограничение по длине: 4000 байт на < 12c, 32767 байт на 12c+ c compatible=12.0.0.0 и выше и max_string_size=extended. То есть, Ваша другая таблица производит строки длиннее.
...
Рейтинг: 0 / 0
21.11.2017, 13:33
    #39556794
Goofy122
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог LISTAGG
Bobby Z.Goofy122A с over() в конце работает только с dual стоит подключить другую таблицу выдает ошибку
ORA-01489: result of string concatenation is too longА это оттого, что VARCHAR2 имеет ограничение по длине: 4000 байт на < 12c, 32767 байт на 12c+ c compatible=12.0.0.0 и выше и max_string_size=extended. То есть, Ваша другая таблица производит строки длиннее.


понял спасибо
...
Рейтинг: 0 / 0
21.11.2017, 18:10
    #39557084
wellvk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог LISTAGG
Здравствуйте!
Goofy122, посмотрите ещё в сторону xmlagg, мне данная функция подошла, когда был аналогичная задачка...
...
Рейтинг: 0 / 0
22.11.2017, 10:52
    #39557349
12c
12c
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог LISTAGG
Код: sql
1.
listagg(col,'; '  ON OVERFLOW TRUNCATE)


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


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