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

Distinct убирает ненужные строки как нужно. Но вот возник вопрос, у меня есть поле "Коды".

Как сделать так, чтобы в этом поле "Коды", где distinct убрал лишние поля, записались данные через запятую.

Например остался код "228" и к нему через запятую приписываются "1337", "113", которые были убраны Distinct'om.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695292
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_DonНапример остался код "228" и к нему через запятую приписываются "1337", "113", которые были убраны Distinct'om.Несусветный бред.

http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695297
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Distinct убрал лишние строки в выборке, как и нужно. С этим проблем нет.

Но мне надо чтобы в поле "Коды" через запятую добавились значения строк, которые там выбыли через distinct.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695298
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть рабочий центр 2 и 3. Дистинкт у меня убирает лишние строки по этим рабочим центрам.

Необходимо, чтобы в строках


Пример таблицы:


Рабочий центр Код
2 228
2 1337
2 123
3 31
3 19

Нужно, чтобы стало так:

Рабочий центр Код
2 228, 1337, 123
3 31, 19

Может так наверное будет понятнее. Просто так объяснить не могу (бестолоч).
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695299
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Donзначения строк, которые там выбыли через distinct.Не пори чушь.

http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695301
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Donбестолоч _ Безграмотная невежда.

RTFM group by
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695302
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

я смотрю ты борзый такой тип. Таблица, которую я привёл в пример ни как не сможет прояснить ситуацию?
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695303
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
group by + listagg
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695304
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторElic,

Tihiy_Don
бестолоч_
Безграмотная невежда.

RTFM group by

Как бы, бестолочью я себя назвал вообще-то.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695305
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Don,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
  1  with t(id,kod) as (
  2  select 2, 228 from dual union all
  3  select 2, 1337 from dual union all
  4  select 2, 123 from dual union all
  5  select 3, 31 from dual union all
  6  select 3, 19 from dual)
  7  select
  8   id
  9  ,listagg(kod, ',') within group(order by null) kod_list
 10  from t
 11* group by id
SQL> /

        ID KOD_LIST
---------- --------------------
         2 123,1337,228
         3 19,31



зи
если кодов очень много, гляньте XMLAGG

......
stax
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695309
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имею такой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select
      distinct
      b.obor
    , a.opis
    , b.rabc
    , b.kods
    , a.model
    , a.har
from t1 a, t2 b
where b.kods<>' '
    and a.code=b.obor
    and (trim(b.rabc) >= '2' and trim(b.rabc) <= '3')



Как бы впиндюрить эту интересную функцию LISTAGG. Сейчас попробую и отпишусь как отработает)
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695311
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем выдает ошибку, что групповая функция не является одногруппной.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695314
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_DonВ общем выдает ошибку, что групповая функция не является одногруппной.Иди в менеджеры клининговых услуг. Там думать необязательно.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695316
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чувствуется крепкая дистинктивная школа. Год назад:Tihiy_DonКоллега, который меня обучает утверждает что динстинкт необходим .
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695318
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё один умник выискался))
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695326
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Don,

покажи desc t2
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695343
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_DonИмею такой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select
      distinct
      b.obor
    , a.opis
    , b.rabc
    , b.kods
    , a.model
    , a.har
from t1 a, t2 b
where b.kods<>' '
    and a.code=b.obor
    and (trim(b.rabc) >= '2' and trim(b.rabc) <= '3')



Как бы впиндюрить эту интересную функцию LISTAGG. Сейчас попробую и отпишусь как отработает)

какое поле "скрыл" distinct ?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select
--      distinct
      b.obor
    , a.opis
    , b.rabc
    , b.kods
    , a.model
    , a.har
    ,listagg(kod, ',') within group(order by null) kod_list
from t1 a, t2 b
where b.kods<>' '
    and a.code=b.obor
    and (trim(b.rabc) >= '2' and trim(b.rabc) <= '3')
group by
      b.obor
    , a.opis
    , b.rabc
    , b.kods
    , a.model
    , a.har
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695350
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал до этого сделать как в Вашем примере. И получается, что он выводит через запятую абсолютно одинаковые цифры и не убирает лишние строки, как до этого убирал дистинкт. Пробовал с дистинктом не помогло, прочитал в интернете, что это функция не работает с функцией дистинкт.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695356
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Don,

в подзапрос
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
SQL> ed
Wrote file afiedt.buf

  1  with t(id,kod) as (
  2  select 2, 228 from dual union all
  3  select 2, 123 from dual union all
  4  select 2, 1337 from dual union all
  5  select 2, 123 from dual union all
  6  select 3, 31 from dual union all
  7  select 3, 31 from dual union all
  8  select 3, 31 from dual union all
  9  select 3, 31 from dual union all
 10  select 3, 19 from dual)
 11  select
 12   id
 13  ,listagg(kod, ',') within group(order by null) kod_list
 14  from t
 15* group by id
SQL> /

        ID KOD_LIST
---------- --------------------
         2 123,123,1337,228
         3 19,31,31,31,31

SQL> ed
Wrote file afiedt.buf

  1  with t(id,kod) as (
  2  select 2, 228 from dual union all
  3  select 2, 123 from dual union all
  4  select 2, 1337 from dual union all
  5  select 2, 123 from dual union all
  6  select 3, 31 from dual union all
  7  select 3, 31 from dual union all
  8  select 3, 31 from dual union all
  9  select 3, 31 from dual union all
 10  select 3, 19 from dual)
 11  ,tt as (select distinct id,kod from t)
 12  select
 13   id
 14  ,listagg(kod, ',') within group(order by null) kod_list
 15  from tt
 16* group by id
SQL> /

        ID KOD_LIST
---------- --------------------
         2 123,1337,228
         3 19,31

SQL>




зи
можно и через row_number, имхо дело вкуса
Код: 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.
25.
SQL> ed
Wrote file afiedt.buf

  1  with t(id,kod) as (
  2  select 2, 228 from dual union all
  3  select 2, 123 from dual union all
  4  select 2, 1337 from dual union all
  5  select 2, 123 from dual union all
  6  select 3, 31 from dual union all
  7  select 3, 31 from dual union all
  8  select 3, 31 from dual union all
  9  select 3, 31 from dual union all
 10  select 3, 19 from dual)
 11  ,tt as (select id,kod,row_number() over (partition by id,kod order by null) rn  from t)
 12  select
 13   id
 14  ,listagg(decode(rn,1,kod), ',') within group(order by null) kod_list
 15  from tt
 16* group by id
SQL> /

        ID KOD_LIST
---------- --------------------
         2 123,1337,228
         3 19,31


.....
stax
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695358
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторзи
можно и через row_number, имхо дело вкуса

SQL> ed
Wrote file afiedt.buf

1 with t(id,kod) as (
2 select 2, 228 from dual union all
3 select 2, 123 from dual union all
4 select 2, 1337 from dual union all
5 select 2, 123 from dual union all
6 select 3, 31 from dual union all
7 select 3, 31 from dual union all
8 select 3, 31 from dual union all
9 select 3, 31 from dual union all
10 select 3, 19 from dual)
11 ,tt as (select id,kod,row_number() over (partition by id,kod order by null) rn from t)
12 select
13 id
14 ,listagg(decode(rn,1,kod), ',') within group(order by null) kod_list
15 from tt
16* group by id
SQL> /

ID KOD_LIST
---------- --------------------
2 123,1337,228
3 19,31

Тоже подумывал про роум намбер, спасибо за пример кода. Только у меня рабочих центров не 2, а множество. Я так понял, Вы конкретно через with выбираете рабочие центра.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695362
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Don
Тоже подумывал про роум намбер, спасибо за пример кода. Только у меня рабочих центров не 2, а множество. Я так понял, Вы конкретно через with выбираете рабочие центра.

про центры не совсем понятно, но

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
SQL> ed
Wrote file afiedt.buf

  1  with t(
  2       obor
  3      , opis
  4      , rabc
  5      , kods
  6      , model
  7      , har
  8      , kod
  9  ) as (
 10  select 2,1,2,3,4,5,228 from dual union all
 11  select 2,1,2,3,4,5,123 from dual union all
 12  select 2,2,2,3,4,5,1337 from dual union all
 13  select 2,1,2,3,4,5,123 from dual union all
 14  select 3,1,2,3,4,5, 31 from dual union all
 15  select 3,1,2,3,4,5, 31 from dual union all
 16  select 3,1,2,3,4,5, 31 from dual union all
 17  select 3,1,2,3,4,5, 31 from dual union all
 18  select 3,1,2,3,4,5, 19 from dual)
 19  ,tt as (select t.*,row_number() over (
 20          partition by obor,opis,rabc,kods,model,har,kod order by null) rn  from t)
 21  select
 22       obor
 23      , opis
 24      , rabc
 25      , kods
 26      , model
 27      , har
 28   ,listagg(decode(rn,1,kod), ',') within group(order by null) kod_list
 29  from tt
 30  group by
 31       obor
 32      , opis
 33      , rabc
 34      , kods
 35      , model
 36*     , har
SQL> /

      OBOR       OPIS       RABC       KODS      MODEL        HAR KOD_LIST
---------- ---------- ---------- ---------- ---------- ---------- --------------------
         2          1          2          3          4          5 123,228
         2          2          2          3          4          5 1337
         3          1          2          3          4          5 19,31



.....
stax
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695389
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Большое спасибо, буду разбираться.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695404
Lary Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax, у меня есть задача. Накидаешь пример решения?
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695410
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_DonЕсть рабочий центр 2 и 3. Дистинкт у меня убирает лишние строки по этим рабочим центрам.

Необходимо, чтобы в строках


Пример таблицы:


Рабочий центр Код
2 228
2 1337
2 123
3 31
3 19

Нужно, чтобы стало так:

Рабочий центр Код
2 228, 1337, 123
3 31, 19

Может так наверное будет понятнее. Просто так объяснить не могу (бестолоч).
это не distinct, это конатенация значений с группировкой, в ms sql 2017 появилась встроенная функция под это STRING_AGG, а в 10 оракле была скрытая подобная, в 11 вроде ее открыли..... о нашел LISTAGG https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions089.htm#SQLRF30030
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695428
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
17-77это не distinct, это конатенация значений с группировкой, в ms sql 2017 появилась встроенная функция под это STRING_AGG, а в 10 оракле была скрытая подобная, в 11 вроде ее открыли..... о нашел LISTAGG https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions089.htm#SQLRF30030

Дон имел ввиду что distinct с list_agg нельзя
ORA-30482: DISTINCT option not allowed for this function
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  1* select deptno,count(distinct job) cc from emp group by deptno
SQL> /

    DEPTNO         CC
---------- ----------
        30          3
        20          3
        10          3

SQL> ed
Wrote file afiedt.buf

  1* select deptno, listagg(distinct job, ',') within group(order by null) job_list from emp group by deptno
SQL> /
select deptno, listagg(distinct job, ',') within group(order by null) job_list from emp group by deptno
               *
ERROR at line 1:
ORA-30482: DISTINCT option not allowed for this function



.....
stax
...
Рейтинг: 0 / 0
25 сообщений из 55, страница 1 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Кантеканация данных, которые скрыл distinct
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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