powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сцепить содержимое
26 сообщений из 26, показаны все 2 страниц
Сцепить содержимое
    #39601178
mbm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mbm
Гость
Уверена, что такое можно сделать, но не соображу как:
Есть исходная табличка:
НоменклатураСчёт учёта130020100691130020100723130020100791130020100991130020101023130020101091130020101323130020101723130020101791130020101792130020102091130020102094
Необходимо сгруппировать записи следующим образом:
НоменклатураСчёт учёта130020100691130020100723/91130020100991130020101023/91130020101323130020101723/91/92130020102091/94
Надоумьте как реализовать это в PL/SQL?

Заранее благодарю!
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39601186
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mbm в PL/SQL? RTFM LISTAGG (FAQ)
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39601190
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39601191
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Студентам, желающим помощи

Покажите что Вы пытались сделать, начните с тестовых данных:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with t(ID,ACCOUNT) as ( 
select 1300201006,91 from dual union all
select 1300201007,23 from dual union all
select 1300201007,91 from dual union all
select 1300201009,91 from dual union all
select 1300201010,23 from dual union all
select 1300201010,91 from dual union all
select 1300201013,23 from dual union all
select 1300201017,23 from dual union all
select 1300201017,91 from dual union all
select 1300201017,92 from dual union all
select 1300201020,91 from dual union all
select 1300201020,94 from dual
) 
select  id,account from t;
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39601223
mbm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mbm
Гость
ElicRTFM LISTAGG (FAQ)
Спасибо, это кажется то, что нужно, но...

Функцию LISTAGG можно использовать в следующих версиях Oracle / PLSQL: Oracle 12c, Oracle 11g Release 2

А есть какой-то аналог под Oracle8i?
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39601228
Фотография mefman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mbmElicRTFM LISTAGG (FAQ)
Спасибо, это кажется то, что нужно, но...

Функцию LISTAGG можно использовать в следующих версиях Oracle / PLSQL: Oracle 12c, Oracle 11g Release 2

А есть какой-то аналог под Oracle8i?
Можно запросить у оракла, для старых версий они выдают по запросу.
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39601230
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mbm Oracle8i? Сочувствую.
RTFM ТОП №14
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39601241
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim LejninПокажите что Вы пытались сделать, начните с тестовых данных:



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

  1  declare
  2   v_s varchar2(4000);
  3   v_id number;
  4  begin
  5  for r in (
  6  with t(ID,ACCOUNT) as (
  7  select 1300201006,91 from dual union all
  8  select 1300201007,23 from dual union all
  9  select 1300201007,91 from dual union all
 10  select 1300201009,91 from dual union all
 11  select 1300201010,23 from dual union all
 12  select 1300201010,91 from dual union all
 13  select 1300201013,23 from dual union all
 14  select 1300201017,23 from dual union all
 15  select 1300201017,91 from dual union all
 16  select 1300201017,92 from dual union all
 17  select 1300201020,91 from dual union all
 18  select 1300201020,94 from dual
 19  )
 20  select  id,account from t order by id) loop
 21   if v_id=r.id then
 22     v_s:=v_s||'/'||r.ACCOUNT;
 23   else
 24     if v_id is not null then
 25       dbms_output.put_line(v_id||' '||v_s);
 26     end if;
 27     v_s:=r.ACCOUNT;
 28     v_id:=r.id;
 29   end if;
 30  end loop;
 31  if v_id is not null then
 32     dbms_output.put_line(v_id||' '||v_s);
 33  end if;
 34* end;
SQL> /
1300201006 91
1300201007 23/91
1300201009 91
1300201010 23/91
1300201013 23
1300201017 23/91/92
1300201020 91/94

PL/SQL procedure successfully completed.

SQL>



....
stax
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39601299
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mbmА есть какой-то аналог под Oracle8i?

ROW_NUMBER + hierarchical query + снять толстый слой пыли с моего пакета 302640 .

SY.
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39601364
mbm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mbm
Гость
to Stax

СПАСИБО!

Мне не хватало "толчка"!
Переделала: записи выбираются из одной таблицы (TMP_DEBET_AMORT) и агрегируются в другую (TMP_DEBET_AMORT_GR):
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
declare
v_acc   varchar2(100);
v_nomen  number;
begin
  delete from TMP_DEBET_AMORT_GR;
  for r in (select nomen_code,amort_debet from TMP_DEBET_AMORT group by nomen_code,amort_debet order by nomen_code)
    loop
      if v_nomen=r.nomen_code
        then v_acc:=v_acc||'/'||r.amort_debet;
      else
        if v_nomen is not null
          then insert into TMP_DEBET_AMORT_GR (nomen_code,amort_debet) values (v_nomen,v_acc);
        end if;
      v_acc:=r.amort_debet;
      v_nomen:=r.nomen_code;
      end if;
    end loop;
 if v_nomen is not null
   then insert into TMP_DEBET_AMORT_GR (nomen_code,amort_debet) values (v_nomen,v_acc);
 end if;
 commit;
end;
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39601517
SAS2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mbmElicRTFM LISTAGG (FAQ)
Спасибо, это кажется то, что нужно, но...

Функцию LISTAGG можно использовать в следующих версиях Oracle / PLSQL: Oracle 12c, Oracle 11g Release 2

А есть какой-то аналог под Oracle8i?

а что еще 8 юзается кем то, прикольно
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602063
Фотография Jebrail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wm_concat же.
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602099
Jebrailwm_concat же.и ты даже можешь продемонстрировать его использование на версии 8i?
а ничего, что она появилась сильно позже (даже не в девятке, если что) и так и осталась недокументированной?
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602141
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхдаже не в девятке, если что
А вот тут пруф, пожалуйста. Т.к. я её в 9.2 использовал точно.

Документировали её с 10-ки, насколько я помню.
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602145
env,

не раньше, чем Jebrail покажет, что её можно использовать в 9i
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602147
envнасколько я помню."есть только двое, (памяти) которых я доверяю. один из них - это я, а второй - не ты"(с) ;)

Сам-то доказать можешь, что твое "точно" было в версии 9i, а не в 10g, например?
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602149
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envА вот тут пруф, пожалуйста. Т.к. я её в 9.2 использовал точно.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SQL> select object_type, count(*) from all_objects where owner = 'WMSYS' group by object_type;

OBJECT_TYPE          COUNT(*)
------------------ ----------
INDEX                      33
PROCEDURE                   1
SEQUENCE                    9
TABLE                      23
TYPE                        5
VIEW                       58

6 rows selected.

SQL> disc
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602155
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эх,

А есть какой-нибудь аналог live sql для 8i, 9i и т.д.?
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602157
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - ЭхСам-то доказать можешь, что твое "точно" было в версии 9i, а не в 10g, например?

Я с 9.2.0.4 на 11g перескакивал. С 10-й сильно позже пришлось столкнуться.
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602226
WM_CONCAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jebrailwm_concat же.
10-ки не осталось :(
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Connected to Oracle8i Enterprise Edition Release 8.1.7.3.0
select wm_concat(dummy) from dual
ORA-00904: invalid column name

Connected to Oracle9i Enterprise Edition Release 9.2.0.8.0 
select wm_concat(dummy) from dual
ORA-00904: "WM_CONCAT": invalid identifier

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 
select wm_concat(dummy) from dual
WM_CONCAT(DUMMY)
--------------------------------------------------------------------------------
X

Connected to Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 
select wm_concat(dummy) from dual
ORA-00904: "WM_CONCAT": invalid identifier


То есть
а) В 8-ке WM_CONCAT не было
б) Вообще, советовать использовать недокументированную функцию, которая была только в двух майор версиях, при этом еще и изменялась (результат с varchar2 на clob) - не очень хорошо
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602249
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WM_CONCAT,

Спасибо. Значит либо память подводит, либо один добрый человек "допилил" 9.2.0.4 функционалом из 10-ки для своих нужд.

Виталий, wm_concat в 10g входит в бинарники или накатывается из скриптов схемы wmsys?
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602286
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envWM_CONCAT,

Спасибо. Значит либо память подводит, либо один добрый человек "допилил" 9.2.0.4 функционалом из 10-ки для своих нужд.


Код: 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.
53.
54.
55.
56.
57.
58.
59.
60.
61.
SQL>  CREATE OR REPLACE
type       WM_CONCAT_IMPL wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
d
270 160
bg9hz+fBwa888VEZGViHFs/oOP0wg433f64df3QCWE7VehmhTFcUe3y+JrsniV3cSuvmnE3g
Y93dtR+cCsU1N+UQDGbtzhCf2HIdr8lPzfgF2bmCTvmGlHQbTAjTftNrDq3p093ncwb32OyX
3ZFDTeH2jpjm3uWYyT8kZBfJIYxRwgLfRApoW32cpy0eRnvDBt2XfTAMXKCSNnqSoTiGA83W
6deKW+rWyBu9L/EPyFkmQZeBncNsiNDF8fa1Sm6vdQiEanlCQnaPJ11a0na8hK6psDSaey+x
fdMupCwSvg6gMrSV4QCguhOCqW2AmxRVMqpXJootPpTBxBFZc7hORGbriUI=
/ 
Type created.
 
SQL>  CREATE OR REPLACE function wm_concat wrapped
a000000
1
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
abcd
8
58 96
+CuW1MAfZPVR6NOnXKVmXY2o9pswg8eZgcfLCNL+XhZy8K7/cgzcVrPnfMPnx3TAM7h0ZSXD
j57Asr2ym9ZtFldFmFu+RdpAU8VGORKSvtVG+DmAOR4C+NTa+Pit2kDbEpI5zhZUgqameSkE
DQ==
/ 
Function created.
 
SQL>  select wm_concat(object_id) from sys.user_objects
/ 
WM_CONCAT(OBJECT_ID)                                                            
--------------------------------------------------------------------------------
108674,108672,53144,53147,53150,53151,53162                                     
1 row selected.



.....
stax
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602292
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тока не говори что ты в 9-ку запихал пакет с форматом WRAP от 10-ки
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602336
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

наоборот с 10 --> выше

ps
разврапливать тож не пробовал

.....
stax
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602345
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда объясни что ты хотел продемонстрировать в предыдущем посте
...
Рейтинг: 0 / 0
Сцепить содержимое
    #39602415
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

возможнго похожим образом "один добрый человек "допилил" 9.2.0.4 "

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


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