powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Кантеканация данных, которые скрыл distinct
55 сообщений из 55, показаны все 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
Кантеканация данных, которые скрыл distinct
    #39695431
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Совершенно точно! У меня и вылезала данная ошибка, когда я брал примеры различные из интернета, говорили что мол ввели возможность использовать дистинкт в функции Listagg, а нифига(
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695500
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возник ещё один такой интересный вопрос, а как сделать так, чтобы в строке (через занятую где данные перечисляются) не было повторяющихся значений?
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695515
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напоминает кончный автомат без памяти. Разжевывали, разжевывали, а оно опять про тот же самый интересный вопрос.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695524
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-,

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

21658489
код в данных повторяется (напр 31)
....
stax
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695534
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это да, но мне необходимо чтобы он приписывал строчки через запятую без повторений значений. Попробовал через Having, но к сожалению не вышло.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695565
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_DonЭто да, но мне необходимо чтобы он приписывал строчки через запятую без повторений значений. Попробовал через Having, но к сожалению не вышло.

непонятно
нужен пример есть -> получить
аля 21658359

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

Раб. центр: Код:0102999141010288814201028881420102888142010277714101024441500103333140010399916001032221550103222155010322215501031111700104111190010411119001040221350104333228

рабочий центр разделяется на 4 символе, то-есть: 0102888 - это второй раб. центр, 0102777 тоже второй и так далее по цифрам, всего у меня в выборке должно быть 3 диапазона: 2-3-4, я это сделал через
Код: sql
1.
(trim(b.рабц) >= '010200' and trim(b.рабц) <= '010499')



Если рабочие центры 2 совпадают, не важно, будет ли это 0102777 или 0102444, то они должны быть откинуты о должен остаться один (первый по списку), а из откинутого центра дописать номер в оставшийся через запятую.

Какой должен быть результат (это я все подогнал в екселе, но для себя хочу понять как это возможно реализовать):

Раб. центр: Код:0102999141;142;141;1500103333140;160;155;1700104111190;135;228

Мой код запроса на данный момент:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select
    distinct
      b.оборуд
    , a.описание
    , b.рабц
    , b.код
    , a.модель
    , a.характеристика
 --, listagg(trim(b.код), ';') within group(order by b.оборуд) kod_list
from табл1 a, табл2 b
where b.код<>' '
    and a.оборуд=b.оборуд
    and (trim(b.рабц) >= '010200' and trim(b.рабц) <= '010499')
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695626
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_DonРаб. центр: Код:0102999141;142;141;1500103333140;160;155;1700104111190;135;228



Код: 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.
SQL> ed
Wrote file afiedt.buf

  1  with t (centr,kod) as (
  2  select '0102999',  141 from dual union all
  3  select '0102888',  142 from dual union all
  4  select '0102888',  142 from dual union all
  5  select '0102888',  142 from dual union all
  6  select '0102777',  141 from dual union all
  7  select '0102444',  150 from dual union all
  8  select '0103333',  140 from dual union all
  9  select '0103999',  160 from dual union all
 10  select '0103222',  155 from dual union all
 11  select '0103222',  155 from dual union all
 12  select '0103222',  155 from dual union all
 13  select '0103111',  170 from dual union all
 14  select '0104111',  190 from dual union all
 15  select '0104111',  190 from dual union all
 16  select '0104022',  135 from dual union all
 17  select '0104333',  228 from dual)
 18  , tt as (select distinct * from t)
 19  select
 20   min(centr) first_centr
 21  ,listagg(kod, ',') within group(order by centr) kod_list
 22  from tt
 23* group by substr(centr,4,1)
SQL> /

FIRST_C KOD_LIST
------- --------------------
0102444 150,141,142,141
0103111 170,155,140,160
0104022 135,190,228




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

Да там печалька:
1. Надо определить кто множит данные, может это следствие присоединения "табл1 a"?
2. А дольше надо понять как не потерять оборудование =) (b.оборуд)
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695644
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мужики, завтра проверю и вам обязательно отпишу, большое спасибо.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695936
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе утро. Написал запрос, но у меня возникла ситуация, что нужно считать отдельно для каждого оборудования и раб. центра отдельно список кодов.

Хотел осуществить отделение по оборудованию с помощью конструкции "partition by", но не вышло.
Я сделал скриншот, какие данные должны выводится. То-есть, для каждого оборудования (их может быть несколько, если есть несколько рабочих центров, но их уникальность будет в различных центрах: 2, 3 и 4 и для каждого их этих центрво приписываются строки как я объяснял постом ранее.)


Написал такой запрос, но он не привёл к желаемому результату, теперь он клонирует оборудования на три рабочих центра в обязательном порядке и пишет для этого центра все строки кодов за данный центр из всей таблице, а не для каждого оборудования.

Код: sql
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.
53.
54.
55.
56.
57.
58.
59.
select 
distinct
t2.oborud
,t2.opisanie
,t1.rab_c
,t1.kody
,t2.model
,t2.kr_hr

from(

select
 min(рабц) rab_c
,listagg(kods, ',') within group(order by cwoc) kody
 from 
(
select 
    distinct 
     oborud
    ,opisanie
    ,cwoc
    ,kods
    ,model
    ,kr_hr
from 
    (select 
      b.оборуд oborud
    , a.опис opisanie
    , b.рабц рабц
    , b.код kods
    , a.модель model
    , a.характ kr_hr
    from табл1 a 
       , табл2 b 
       
    where   b.код<>' '
        and a.оборуд=b.оборуд
        and (trim(b.рабц) >= '010200' and trim(b.рабц) <= '010499')
    )
    
)
group by substr(рабц,4,1)
) t1
,
(
select
    distinct
      b.оборуд oborud
    , a.опис opisanie
    , b.рабц рабц
    , b.код kods
    , a.модель model
    , a.характ kr_hr
from табл1 a 
,    табл2 b 
where b.tкод<>' '
    and a.оборуд=b.оборуд
    and (trim(b.рабц) >= '010200' and trim(b.рабц) <= '010499') 
) t2
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695945
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Don,

21658887

ps
возможно Вам хватит group by оборуд,substr(рабц,4,1)

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
select
    distinct
      b.оборуд
    , a.опис opisanie
    , tt.rab_c
    , tt.kody
    , a.модель model
    , a.харк kr_hr
from табл1 a 
,    табл2 b 
,    (select
        min(b.рабц) rab_c
        ,listagg(b.код, ',') within group(order by b.рабц) kody
      from 
        табл1 a
        ,табл2 b
        where b.код<>' '
    and a.оборуд=b.оборуд
    and (trim(b.рабц) >= '010200' and trim(b.рабц) <= '010499')
      group by b.оборуд, substr(рабц,4,1)
     ) tt
where b.код<>' '
    and a.оборуд=b.оборуд
    and (trim(b.рабц) >= '010200' and trim(b.рабц) <= '010499')
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695960
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Don,


Вам конечно виднее, но имхо повторное соединение лишнее (да и с тт JOIN CARTESIAN)

21658887

зы
можете и две таблицы (табл1 a,табл2 b) для примера привести

.....
stax
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39695971
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пример таблиц как в экселе (в предыдущим вложении) если вы имели ввиду привести вам пример таблицы. Таблица "табл1" - от туда связывается оборудование с табл2 и берется пара полей, которые не влияют не выборку.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39696038
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Donпример таблиц как в экселе (в предыдущим вложении) если вы имели ввиду привести вам пример таблицы. Таблица "табл1" - от туда связывается оборудование с табл2 и берется пара полей, которые не влияют не выборку.
с вложениями я не совладал
приведите пример данных (в ідеале через with) на которых 21659004 дает неверный результат
я постараюсь поправить ошибку

.....
stax
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39696057
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
with t (oborud
         ,opisanie
         ,centr
         ,kod
         ,model
         ,haracteristika) 
as (
select '111110', 'оборудование1', '0102999', 141, 'т-100', 'символы'   from dual union all
select '312323', 'оборудование1', '0102288', 160, 'т-100', 'символы'   from dual union all
select '312323', 'оборудование1', '0103000', 170, 'т-100', 'символы'   from dual union all
select '228133', 'оборудование1', '0104250', 141, 'т-100', 'символы'   from dual union all
select '228133', 'оборудование1', '0102250', 141, 'т-100', 'символы'   from dual union all
select '228133', 'оборудование1', '0103250', 141, 'т-100', 'символы'   from dual union all
 )
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39696065
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
21659004
Тут я ошибся, второго кода 141 не должно быть, без повторений. Извиняюсь за невнимательность.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39696069
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_Don Тут я ошибся
Ты совсем не понимаешь что от тебя хотят?
Привел одну таблицу, а по факту
автор
Код: plsql
1.
2.
from табл1 a 
       , табл2 b
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39696073
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
123йй,

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

Оборудование: Раб. центр Код:12345 0102999 14112345 0102888 14211111 0102850 14211111 0104111 13011111 0102888 19922222 0102777 14133333 0102444 15033333 0103333 14044444 0103999 16044444 0103222 15544444 0103222 14555555 0103222 16066666 0103111 17077777 0104111 19077777 0104111 19088888 0104022 13588888 0102022 17988888 0103022 160

На выходе должно быть так:
Оборуд: Центр: Код:12345 0102999 14114211111 0102850 14219911111 0104111 13022222 0102777 14133333 0102444 15033333 0103333 14044444 0103999 16015514555555 0103222 16066666 0103111 17077777 0104111 19088888 0104022 13588888 0102022 17988888 0103022 160
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39696110
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_DonНа выходе должно быть так:
это решение тебе уже давал Stax
Код: 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.
with t as (
select 12345 a, '0102999' b,  141 c from dual union all
select 12345, '0102888',  142 from dual union all
select 11111, '0102850',  142 from dual union all
select 11111, '0104111',  130 from dual union all
select 11111, '0102888',  199 from dual union all
select 22222, '0102777',  141 from dual union all
select 33333, '0102444',  150 from dual union all
select 33333, '0103333',  140 from dual union all
select 44444, '0103999',  160 from dual union all
select 44444, '0103222',  155 from dual union all
select 44444, '0103222',  145 from dual union all
select 55555, '0103222',  160 from dual union all
select 66666, '0103111',  170 from dual union all
select 77777, '0104111',  190 from dual union all
select 77777, '0104111',  190 from dual union all
select 88888, '0104022',  135 from dual union all
select 88888, '0102022',  179 from dual union all
select 88888, '0103022',  160 from dual)
, tt as (select distinct * from t)
   select a,
   max(b) first_centr
  ,listagg(c, ',') within group(order by a) kod_list
   from tt
  group by a,substr(b,4,1)
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39696120
Фотография 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.
  1  with t(oborud,centr,kod) as (
  2  select '12345','0102999',  141 from dual union all
  3  select '12345','0102888',  142 from dual union all
  4  select '11111','0102850',  142 from dual union all
  5  select '11111','0104111',  130 from dual union all
  6  select '11111','0102888',  199 from dual union all
  7  select '22222','0102777',  141 from dual union all
  8  select '33333','0102444',  150 from dual union all
  9  select '33333','0103333',  140 from dual union all
 10  select '44444','0103999',  160 from dual union all
 11  select '44444','0103222',  155 from dual union all
 12  select '44444','0103222',  145 from dual union all
 13  select '55555','0103222',  160 from dual union all
 14  select '66666','0103111',  170 from dual union all
 15  select '77777','0104111',  190 from dual union all
 16  select '77777','0104111',  190 from dual union all
 17  select '88888','0104022',  135 from dual union all
 18  select '88888','0102022',  179 from dual union all
 19  select '88888','0103022',  160 from dual )
 20  ,tt as (select distinct * from t)
 21  select
 22    oborud
 23   ,min(centr) first_centr
 24   ,listagg(kod, ',') within group(order by oborud,centr) kod_list
 25  from tt
 26  group by oborud,substr(centr,4,1)
 27* order by 1,2
SQL> /

OBORU FIRST_C KOD_LIST
----- ------- --------------------
11111 0102850 142,199
11111 0104111 130
12345 0102888 142,141
22222 0102777 141
33333 0102444 150
33333 0103333 140
44444 0103222 145,155,160
55555 0103222 160
66666 0103111 170
77777 0104111 190
88888 0102022 179
88888 0103022 160
88888 0104022 135

13 rows selected.



......
stax
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39696189
Tihiy_Don
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо, всё получилось. Пришлось помучиться с переводом из витча в обычный селект и вкладывать всё это дело в подзапрос.
...
Рейтинг: 0 / 0
Кантеканация данных, которые скрыл distinct
    #39696197
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tihiy_DonБольшое спасибо, всё получилось. Пришлось помучиться с переводом из витча в обычный селект и вкладывать всё это дело в подзапрос.

удобнее (мож и проще)

with t as (Ваш селект)
...
/

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

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

не влияет (вернее возможно чутку и влияет, но не в Вашем случае)

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

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


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