powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Добавление строки с пустой ячейкой по id
3 сообщений из 3, страница 1 из 1
Добавление строки с пустой ячейкой по id
    #40051005
007alex3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Прошу помочь с задачей.
Есть такой набор данных:

with cte as (
select 3451363512 as t_id
,2 as nmbr
,'2,3,4,6,13,15,16,17,19,20,21,22;21' as comb
from dual
union all
select 3451443647 as t_id
,1 as nmbr
,'11,13,23,26,32,35,43;1' as comb
from dual
union all
select 3451443647 as t_id
,2 as nmbr
,'2,3,21,22,24,33,44;4' as comb
from dual
)

Из этого набора данных мне нужно получить такой результат:
t_id | comb
3451363512 | 1:;2:2,3,4,6,13,15,16,17,19,20,21,22;21;3:; (вывод по маске)

Столбец comb считается следующим образом: для каждого t_id должно быть три (1,2,3) nmbr и следовательно расписывая маску должно выглядеть примерно так: nmbr:comb; nmbr:comb; nmbr:comb; , но если nmbr и comb отсутствуют, то не ставится ничего (1:;). В примере сделал только три комбинации, но их может быть 100, можете пожалуйста помочь как - то автоматизировать данный процесс, потому что у меня получилось сделать только перебором, но расписывать перебор значений для ста комбинаций очень долго.
...
Рейтинг: 0 / 0
Добавление строки с пустой ячейкой по id
    #40051012
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
url=http://citforum.ru/howto/smart-questions-ru.shtml]HOWTO :: Как правильно задавать вопросы
Как мне оформить свое сообщение?
Студентам, желающим помощи

1) Полная постановка задачи (без сокращений)
2) Подготовьте тестовые данные, лучше в виде with
например (не ваш случай):

Код: plsql
1.
2.
3.
4.
5.
6.
with tbl(col1,col2,col3) as (
select 1,'name1',to_date('11.02.1921','DD.MM.YYYY') from dual union all
select 2,'name2',to_date('11.02.1922','DD.MM.YYYY') from dual union all
select 3,'name2',to_date('11.02.1923','DD.MM.YYYY') from dual
)
select col2 from tbl...



3) Покажите что сделали, что получили, без сокращений. ( лучше не в виде screenshot)


4) используйте Тэги, читать код без них неудобно, правильно оформляйте сообщение

Попробуйте прочитать что написали Вы, и пример нормального оформления (посмотреть что получится можно используя предварительный просмотр)
Пример нормального форматирования
007alex3
Всем привет!
Прошу помочь с задачей.
Есть такой набор данных:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with cte as (
            select 3451363512 as t_id
            ,2 as nmbr
            ,'2,3,4,6,13,15,16,17,19,20,21,22;21' as comb
            from dual
            union all
            select 3451443647 as t_id
            ,1 as nmbr
            ,'11,13,23,26,32,35,43;1' as comb
            from dual
            union all
            select 3451443647 as t_id
            ,2 as nmbr
            ,'2,3,21,22,24,33,44;4' as comb
            from dual
            )



Из этого набора данных мне нужно получить такой результат:
Код: plsql
1.
2.
t_id        | comb
3451363512  | 1:;2:2,3,4,6,13,15,16,17,19,20,21,22;21;3:; -- (вывод по маске)



Столбец comb считается следующим образом:

для каждого t_id должно быть три (1,2,3) nmbr
и следовательно расписывая маску должно выглядеть примерно так:
Код: plsql
1.
nmbr:comb; nmbr:comb; nmbr:comb; 



, но если nmbr и comb отсутствуют, то не ставится ничего
Код: plsql
1.
(1:;)



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


Автоматизировать можно, если есть внятный алгоритм.
Использовать можно любой язык программирования, в том числе и SQL.

Например если нужно сгенерить список всех полей таблицы, я использую следующий SQL script:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
-- generate all fields of table with table alias
-- use: @ colgen owner table table_alias
select '        , '||'&3.."'||COLUMN_NAME||'"'
from all_tab_columns
where
        owner=upper('&1')
        and TABLE_NAME=upper('&2')
order by column_id
/
...
Рейтинг: 0 / 0
Добавление строки с пустой ячейкой по id
    #40051784
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
007alex3,

если результат больше 4000, переписать для clob

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

  1  with cte as (
  2  select 3451363512 as t_id
  3  ,2 as nmbr
  4  ,'2,3,4,6,13,15,16,17,19,20,21,22;21' as comb
  5  from dual
  6  union all
  7  select 3451443647 as t_id
  8  ,1 as nmbr
  9  ,'11,13,23,26,32,35,43;1' as comb
 10  from dual
 11  union all
 12  select 3451443647 as t_id
 13  ,2 as nmbr
 14  ,'2,3,21,22,24,33,44;4' as comb
 15  from dual
 16  )
 17  , n as (select rownum rn from dual connect by level<=5) --любой генератор
 18  select
 19   t_id
 20  ,listagg(rn||':;'||comb /*ON OVERFLOW TRUNCATE '>' WITH  COUNT*/,';') WITHIN GROUP (ORDER BY rn ) comb
 21  from cte partition by (t_id) RIGHT OUTER JOIN n on (nmbr=rn)
 22* group by t_id

SQL> /

      T_ID COMB
---------- ----------------------------------------------------------------------
3451363512 1:;;2:;2,3,4,6,13,15,16,17,19,20,21,22;21;3:;;4:;;5:;
3451443647 1:;11,13,23,26,32,35,43;1;2:;2,3,21,22,24,33,44;4;3:;;4:;;5:;


SQL>



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


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