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

Заранее благодарю!
...
Рейтинг: 0 / 0
13.02.2018, 14:57
    #39601186
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сцепить содержимое
mbm в PL/SQL? RTFM LISTAGG (FAQ)
...
Рейтинг: 0 / 0
13.02.2018, 14:59
    #39601190
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сцепить содержимое
...
Рейтинг: 0 / 0
13.02.2018, 14:59
    #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
13.02.2018, 15:22
    #39601223
mbm
mbm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сцепить содержимое
ElicRTFM LISTAGG (FAQ)
Спасибо, это кажется то, что нужно, но...

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

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

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

А есть какой-то аналог под Oracle8i?
Можно запросить у оракла, для старых версий они выдают по запросу.
...
Рейтинг: 0 / 0
13.02.2018, 15:27
    #39601230
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сцепить содержимое
mbm Oracle8i? Сочувствую.
RTFM ТОП №14
...
Рейтинг: 0 / 0
13.02.2018, 15:45
    #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
13.02.2018, 16:46
    #39601299
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сцепить содержимое
mbmА есть какой-то аналог под Oracle8i?

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

SY.
...
Рейтинг: 0 / 0
13.02.2018, 17:33
    #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
14.02.2018, 01:46
    #39601517
SAS2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сцепить содержимое
mbmElicRTFM LISTAGG (FAQ)
Спасибо, это кажется то, что нужно, но...

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

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

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

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

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

Сам-то доказать можешь, что твое "точно" было в версии 9i, а не в 10g, например?
...
Рейтинг: 0 / 0
15.02.2018, 09:34
    #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
15.02.2018, 09:43
    #39602155
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сцепить содержимое
Добрый Э - Эх,

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

Я с 9.2.0.4 на 11g перескакивал. С 10-й сильно позже пришлось столкнуться.
...
Рейтинг: 0 / 0
15.02.2018, 11:30
    #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
15.02.2018, 12:26
    #39602249
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сцепить содержимое
WM_CONCAT,

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

Виталий, wm_concat в 10g входит в бинарники или накатывается из скриптов схемы wmsys?
...
Рейтинг: 0 / 0
15.02.2018, 13:18
    #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
15.02.2018, 13:21
    #39602292
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сцепить содержимое
Тока не говори что ты в 9-ку запихал пакет с форматом WRAP от 10-ки
...
Рейтинг: 0 / 0
15.02.2018, 13:58
    #39602336
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сцепить содержимое
Вячеслав Любомудров,

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

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

.....
stax
...
Рейтинг: 0 / 0
15.02.2018, 14:02
    #39602345
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сцепить содержимое
Тогда объясни что ты хотел продемонстрировать в предыдущем посте
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сцепить содержимое / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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