powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / wm_concat но по условию
9 сообщений из 9, страница 1 из 1
wm_concat но по условию
    #40080533
usmazat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
каким образом имея "FORMID""STREAMID""TEAMS_KEY""EXAMDATE""BEGINTIME""DISCIPLINEID""ROOM_NAME"341145941"764895f1-50b5-4cba-9de8-9012dfbaa2a5"30.06.21"10.00"0"Комната для экзамена_0_30.06.21_10.00"337815942"6762bc90-e3af-4455-be69-f93dc1a437e6"30.06.21"12.00"0"Комната для экзамена_0_30.06.21_12.00"340324942"8bda0a80-0bfe-489e-bea3-3eca50a1c504"30.06.21"12.00"0"Комната для экзамена_0_30.06.21_12.00"340814942"addddfdb-a519-4bd1-90f6-f40d96cddb76"30.06.21"12.00"0"Комната для экзамена_0_30.06.21_12.00"340457941"65ec0346-572b-4dd2-95c4-0a28c33a12f8"30.06.21"10.00"0"Комната для экзамена_0_30.06.21_10.00"339882941"5f50ddee-3dc9-48d4-a42b-b0d33797933e"30.06.21"10.00"0"Комната для экзамена_0_30.06.21_10.00"340147941"b0530126-b4f7-486a-9abd-56f7a6f7a07f"30.06.21"10.00"0"Комната для экзамена_0_30.06.21_10.00"337815941"6762bc90-e3af-4455-be69-f93dc1a437e6"30.06.21"10.00"0"Комната для экзамена_0_30.06.21_10.00"337514942"dd130236-bf6a-495d-be03-f29f9b2f4a18"30.06.21"12.00"0"Комната для экзамена_0_30.06.21_12.00"339421942"29663beb-90a5-46e7-a256-2ffaa884b4fb"30.06.21"12.00"0"Комната для экзамена_0_30.06.21_12.00"340147942"b0530126-b4f7-486a-9abd-56f7a6f7a07f"30.06.21"12.00"0"Комната для экзамена_0_30.06.21_12.00"

можно сгрупировать данные по streamid чтобы получить
"STREAMID""TEAM_KEYS""EXAMDATE""BEGINTIME""DISCIPLINEID""ROOM_NAME"941"6762bc90-e3af-4455-be69-f93dc1a437e6 | 5f50ddee-3dc9-48d4-a42b-b0d33797933e | b0530126-b4f7-486a-9abd-56f7a6f7a07f"30.06.21"10.00"0"Комната для экзамена_0_30.06.21_10.00" 941"65ec0346-572b-4dd2-95c4-0a28c33a12f8 | 764895f1-50b5-4cba-9de8-9012dfbaa2a5"30.06.21"10.00"0"Комната для экзамена_0_30.06.21_10.00"942"8bda0a80-0bfe-489e-bea3-3eca50a1c504 | dd130236-bf6a-495d-be03-f29f9b2f4a18 | addddfdb-a519-4bd1-90f6-f40d96cddb76" 30.06.21"12.00"0"Комната для экзамена_0_30.06.21_12.00"942"29663beb-90a5-46e7-a256-2ffaa884b4fb | 6762bc90-e3af-4455-be69-f93dc1a437e6 | b0530126-b4f7-486a-9abd-56f7a6f7a07f"30.06.21"12.00"0"Комната для экзамена_0_30.06.21_12.00"


т.е чтобы поле team_keys содержало неболее чем не более чем 3 значений поля для указанного streamid . Первая строчка со streamid =941 содержит первые 3 значения team_key сконкатенировных через | , вторая оставшиеся 2
первая строчка со streamid =942 содержит первые 3 значения ,вторая оставшиеся 3 значения team_key, порядок внутри team_keys и разделитель не важен


что то наподобие wm_concat но по условию. Версия oracle 10.2.0.5
...
Рейтинг: 0 / 0
wm_concat но по условию
    #40080548
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
wm_concat но по условию
    #40080580
usmazat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
123йй, не совсем понимаю как можно с помощью указанного примера конкатенировать частями
...
Рейтинг: 0 / 0
wm_concat но по условию
    #40080582
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по описанию, Вам не надо конкатенировать по условию.
Вам надо сформировать группы не длиннее 3 строк.
Механизм row_number() over(...) может быть использован для этого вполне очевидным способом.
...
Рейтинг: 0 / 0
wm_concat но по условию
    #40080587
usmazat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous, не длиннее да, но при этом при этом надо чтобы в следующую группу вошло только то что не было в предыдущей.
в исходных данных 11 строк, из них 5 имеют streamid 941, 6 - streamid= 942, нужно чтобы получилось 4 строчки
1- строчка содержит первые 3 строки со streamid =941
2 -строчка содержит 4 и 5 строки со streamid =941
3- строчка содержит первые 3 строки со streamid =942
4 -строчка содержит 4,5,6 строки со streamid =942

к сожалению для меня это не столь очевидно пока что
...
Рейтинг: 0 / 0
wm_concat но по условию
    #40080598
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
usmazat

к сожалению для меня это не столь очевидно пока что


Код: 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.
with sample
  as (
      select 341145 FORMID,941 STREAMID,'764895f1-50b5-4cba-9de8-9012dfbaa2a5' TEAMS_KEY,'30.06.21' EXAMDATE,'10.00' BEGINTIME,0 DISCIPLINEID,'Exam_room_0_30.06.21_10.00' ROOM_NAME from dual union all
      select 337815,942,'6762bc90-e3af-4455-be69-f93dc1a437e6','30.06.21','12.00',0,'Exam_room_0_30.06.21_12.00' from dual union all
      select 340324,942,'8bda0a80-0bfe-489e-bea3-3eca50a1c504','30.06.21','12.00',0,'Exam_room_0_30.06.21_12.00' from dual union all
      select 340814,942,'addddfdb-a519-4bd1-90f6-f40d96cddb76','30.06.21','12.00',0,'Exam_room_0_30.06.21_12.00' from dual union all
      select 340457,941,'65ec0346-572b-4dd2-95c4-0a28c33a12f8','30.06.21','10.00',0,'Exam_room_0_30.06.21_10.00' from dual union all
      select 339882,941,'5f50ddee-3dc9-48d4-a42b-b0d33797933e','30.06.21','10.00',0,'Exam_room_0_30.06.21_10.00' from dual union all
      select 340147,941,'b0530126-b4f7-486a-9abd-56f7a6f7a07f','30.06.21','10.00',0,'Exam_room_0_30.06.21_10.00' from dual union all
      select 337815,941,'6762bc90-e3af-4455-be69-f93dc1a437e6','30.06.21','10.00',0,'Exam_room_0_30.06.21_10.00' from dual union all
      select 337514,942,'dd130236-bf6a-495d-be03-f29f9b2f4a18','30.06.21','12.00',0,'Exam_room_0_30.06.21_12.00' from dual union all
      select 339421,942,'29663beb-90a5-46e7-a256-2ffaa884b4fb','30.06.21','12.00',0,'Exam_room_0_30.06.21_12.00' from dual union all
      select 340147,942,'b0530126-b4f7-486a-9abd-56f7a6f7a07f','30.06.21','12.00',0,'Exam_room_0_30.06.21_12.00' from dual
     ),
t as (
      select  streamid,
              teams_key,
              ceil(row_number() over(partition by streamid order by teams_key) / 3) grp
        from  sample
     )
select  streamid,
        wm_concat(teams_key) teams_keys
  from  t
  group by streamid,
           grp
/

  STREAMID TEAMS_KEYS
---------- ------------------------------------------------------------------------------------------------------------------------
       941 5f50ddee-3dc9-48d4-a42b-b0d33797933e,65ec0346-572b-4dd2-95c4-0a28c33a12f8,6762bc90-e3af-4455-be69-f93dc1a437e6
       941 764895f1-50b5-4cba-9de8-9012dfbaa2a5,b0530126-b4f7-486a-9abd-56f7a6f7a07f
       942 29663beb-90a5-46e7-a256-2ffaa884b4fb,6762bc90-e3af-4455-be69-f93dc1a437e6,8bda0a80-0bfe-489e-bea3-3eca50a1c504
       942 addddfdb-a519-4bd1-90f6-f40d96cddb76,dd130236-bf6a-495d-be03-f29f9b2f4a18,b0530126-b4f7-486a-9abd-56f7a6f7a07f

SQL>



Учти что при переходе на новую версию этот код придется переписывать - WM_CONCAT в них отсутствует:

Код: 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.
with sample(FORMID,STREAMID,TEAMS_KEY,EXAMDATE,BEGINTIME,DISCIPLINEID,ROOM_NAME)
  as (
      select 341145,941,'764895f1-50b5-4cba-9de8-9012dfbaa2a5','30.06.21','10.00',0,'Exam_room_0_30.06.21_10.00' from dual union all
      select 337815,942,'6762bc90-e3af-4455-be69-f93dc1a437e6','30.06.21','12.00',0,'Exam_room_0_30.06.21_12.00' from dual union all
      select 340324,942,'8bda0a80-0bfe-489e-bea3-3eca50a1c504','30.06.21','12.00',0,'Exam_room_0_30.06.21_12.00' from dual union all
      select 340814,942,'addddfdb-a519-4bd1-90f6-f40d96cddb76','30.06.21','12.00',0,'Exam_room_0_30.06.21_12.00' from dual union all
      select 340457,941,'65ec0346-572b-4dd2-95c4-0a28c33a12f8','30.06.21','10.00',0,'Exam_room_0_30.06.21_10.00' from dual union all
      select 339882,941,'5f50ddee-3dc9-48d4-a42b-b0d33797933e','30.06.21','10.00',0,'Exam_room_0_30.06.21_10.00' from dual union all
      select 340147,941,'b0530126-b4f7-486a-9abd-56f7a6f7a07f','30.06.21','10.00',0,'Exam_room_0_30.06.21_10.00' from dual union all
      select 337815,941,'6762bc90-e3af-4455-be69-f93dc1a437e6','30.06.21','10.00',0,'Exam_room_0_30.06.21_10.00' from dual union all
      select 337514,942,'dd130236-bf6a-495d-be03-f29f9b2f4a18','30.06.21','12.00',0,'Exam_room_0_30.06.21_12.00' from dual union all
      select 339421,942,'29663beb-90a5-46e7-a256-2ffaa884b4fb','30.06.21','12.00',0,'Exam_room_0_30.06.21_12.00' from dual union all
      select 340147,942,'b0530126-b4f7-486a-9abd-56f7a6f7a07f','30.06.21','12.00',0,'Exam_room_0_30.06.21_12.00' from dual
     ),
t1 as (
       select  streamid,
               teams_key,
               row_number() over(partition by streamid order by teams_key) rn
         from  sample
      ),
t2 as (
       select  streamid,
               listagg(teams_key,',') within group(order by teams_key) over(partition by streamid,ceil(rn / 3)) teams_keys,
               rn
         from  t1
      )
select  streamid,
        teams_keys
  from  t2
  where mod(rn,3) = 1
/

  STREAMID TEAMS_KEYS
---------- ------------------------------------------------------------------------------------------------------------------------
       941 5f50ddee-3dc9-48d4-a42b-b0d33797933e,65ec0346-572b-4dd2-95c4-0a28c33a12f8,6762bc90-e3af-4455-be69-f93dc1a437e6
       941 764895f1-50b5-4cba-9de8-9012dfbaa2a5,b0530126-b4f7-486a-9abd-56f7a6f7a07f
       942 29663beb-90a5-46e7-a256-2ffaa884b4fb,6762bc90-e3af-4455-be69-f93dc1a437e6,8bda0a80-0bfe-489e-bea3-3eca50a1c504
       942 addddfdb-a519-4bd1-90f6-f40d96cddb76,b0530126-b4f7-486a-9abd-56f7a6f7a07f,dd130236-bf6a-495d-be03-f29f9b2f4a18

SQL>



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

почему list_agg не с group by streamid,grp?

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

почему list_agg не с group by streamid,grp?

.....
stax


Версия oracle 10.2.0.5

SY.
...
Рейтинг: 0 / 0
wm_concat но по условию
    #40080763
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY

Версия oracle 10.2.0.5
SY.

спасибо
не помню уже что в 10-ке было,
а то я начал искать какой-то тайный смысл

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


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