powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как обьединить результат запроса в одну строчку через запятую
15 сообщений из 40, страница 2 из 2
как обьединить результат запроса в одну строчку через запятую
    #38083052
Добрый Э - Эхне зли меняоднообразный способ навязать агрегату порядок агрегирования

про использование в агрегатах конструкции within group (order by ...) читать не пробовал?
сказано жеж -- "ты не мудри, ты пальцем покажы" , хехехе


-- напишы - попробую, почитайу.


пока видел в оракле только один агрегат, который поддерживает этот самый within group (order by ...)- тот самый listagg, упомянутый выше . беглый поиск по оракловому говнищу, имитирующему хэлп, не выдал развёрнутой справки по юзанию этого чуда на все случаи пользования. то же самое и с беглым гуглением. Т.ч. одна надёжа - набросить на ревнивых быдлокодеров, шобы они наконец сылками стали кидаццо, а не какашками, как у них (да ещё у 1С-конфигурастов) заведено.
Но с первого раза видимо слабо набросил. никого не задело. или никто не знает сцылок, а только бухтит словеса в кучку, типа старого э-эха.


- не хотелось переводить старого, доброго э-эха в разряд пустоболов, но пока нет тынца - приходиццо

поправьте меня:

(ну по самому ора-хелпу ещё пара таких ф-й наскребается - RANK и процентиль)



ЗЫ: особо интересует как эту кляузность прилепить к самопальным агрегатам типа string_agg, ибо в простоте имею
Код: plaintext
1.
2.
3.
4.
ORA-00923: ключевое слово FROM не найдено там, где оно ожидалось
00923. 00000 -  "FROM keyword not found where expected"
*Cause:    
*Action:
Error at Line: 11 Column: 52

причом вот тут

- беглым глазом нифуа не вижу рукояток, позволяющих прикрутить этот самый WITHIN GROUP к самопалу. То ли они отсутствуют, как класс, то ли на них поленились указать. а я типа туплю. ну тогда подымите мне веки, ага.
...
Рейтинг: 0 / 0
как обьединить результат запроса в одну строчку через запятую
    #38083063
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не зли меня,пока видел в оракле только один агрегат, который поддерживает этот самый within group (order by ...)- тот самый listagg, упомянутый выше .xmlagg. а к каким еще агрегатам имеет смысл порядок? для самопальных, накрайняк, можно сортировать внутри.
...
Рейтинг: 0 / 0
как обьединить результат запроса в одну строчку через запятую
    #38083064
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще персентиль с сортировкой, ну и first/last
...
Рейтинг: 0 / 0
как обьединить результат запроса в одну строчку через запятую
    #38083092
-2-еще персентиль с сортировкой, ну и first/lastперсентиль видал, ага.

а где first/last тынцы ?
их у вас есть ?
...
Рейтинг: 0 / 0
как обьединить результат запроса в одну строчку через запятую
    #38083104
Человек и Кошка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не зли меня,их у вас есть ?
тынц
...
Рейтинг: 0 / 0
как обьединить результат запроса в одну строчку через запятую
    #38083111
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-а к каким еще агрегатам имеет смысл порядок?
К.О. Тем, у которых, результат зависит от порядка. :)
Например, калькулятору.
...
Рейтинг: 0 / 0
как обьединить результат запроса в одну строчку через запятую
    #38083132
не зли меня,пока видел в оракле только один агрегат, который поддерживает этот самый within group (order by ...)
Ну, тогда читаем про cume_dist , rank / dense_rank / percent_rank , percentile_cont / percentile_disc
...
Рейтинг: 0 / 0
как обьединить результат запроса в одну строчку через запятую
    #38083298
не зли меня,FIRST/LAST присутствует только в виде + кляузы KEEP к мин/макс-у.
если я не прав - поправьте.В данном контексте, ка раз, всё с точностью до наоборот - min/max - кляуза к first/last. И даже так будет сказать неправильно, ибо к first/last может быть прикручен совершенно любой другой агрегат, как то sum, count и т.д. и т.п.
...
Рейтинг: 0 / 0
как обьединить результат запроса в одну строчку через запятую
    #38083526
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не зли меня,прикручиваться к любой аналогичной ф-ии.примерчик, на каких данных sum меняется от перестановки мест слагаемых.
...
Рейтинг: 0 / 0
как обьединить результат запроса в одну строчку через запятую
    #38083812
rimall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE OR REPLACE FUNCTION scott.get_records2 (
  QUERY_my    IN  VARCHAR2
)
RETURN varchar2
IS
TYPE cur_typ IS REF CURSOR;
    c cur_typ;
  rec VARCHAR2(4000);
  rec_out VARCHAR2(32767);
BEGIN

    OPEN c FOR QUERY_my;
    LOOP
        FETCH c INTO rec;
        EXIT WHEN c%NOTFOUND;
        
        
        rec_out := rec_out || ', ' || rec;
        
    END LOOP;
    CLOSE c;

  RETURN rec_out;
END;



Код: plsql
1.
SELECT DEPT.DEPTNO ,get_records2('SELECT ename FROM emp WHERE DEPTNO='||DEPTNO) FROM dept;



не? )
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
как обьединить результат запроса в одну строчку через запятую
    #39496811
ZiB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ZiB
Гость
Здравствуйте.
Мне надо агрегировать текстовую строку вот так:
select string_agg ( n ) from (
select '5' as n from dual union all select '6' from dual
) t --- > '5,6'

Как мне это сделать?

select string_agg (distinct n order by n desc) from (
select '5' as n from dual union all select '5' from dual union all select '6' from dual
) t --- > '6,5'

пока писал уже подсказали
select listagg(n, ',') within group (order by n) from (
select '5' as n from dual union all select '6' from dual
) t
...
Рейтинг: 0 / 0
как обьединить результат запроса в одну строчку через запятую
    #39496815
ZiB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ZiB
Гость
А distinct только подзапросом )-:
...
Рейтинг: 0 / 0
как обьединить результат запроса в одну строчку через запятую
    #39496843
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZiB,

Можно так извернуться, если в данных нет твоего разделителя (в данном случае ",")

Код: plsql
1.
2.
3.
4.
5.
6.
7.
select 
regexp_replace(
listagg(n, ',')  within group (order by n) 
, '([^,]+)(,\1)+', '\1') agg
from (
select '5' as n from dual union all select '6' from dual union all select '6' from dual
) t
...
Рейтинг: 0 / 0
как обьединить результат запроса в одну строчку через запятую
    #39496874
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLМожно так извернуться, если в данных нет твоего разделителя (в данном случае ",")


Есть стандартный способ получения distinct listagg - аналитика

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SQL> with tbl as (
  2               select '5' as n from dual union all
  3               select '6' from dual union all
  4               select '6' from dual
  5              ),
  6   t as (
  7         select  case row_number() over(partition by n order by 1)
  8                   when 1 then n
  9                 end n
 10           from  tbl
 11        )
 12  select  listagg(n,',') within group(order by n)
 13    from  t
 14  /

LISTAGG(N,',')WITHINGROUP(ORDERBYN)
---------------------------------------------------------------------
5,6

SQL> 



SY.
...
Рейтинг: 0 / 0
как обьединить результат запроса в одну строчку через запятую
    #39496887
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

А так аналитика без case
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with tbl as (
               select '5' as n from dual union all
               select '6' from dual union all
               select '6' from dual
              ),
   t as (
         select  lag(null,1,n) over(partition by n order by 1) n
           from  tbl
        )
  select  listagg(n,',') within group(order by n)
    from  t



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


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