powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как добавить несколько пустых строк после определенной строки
12 сообщений из 12, страница 1 из 1
Как добавить несколько пустых строк после определенной строки
    #39777444
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть запрос

Код: sql
1.
2.
3.
4.
5.
6.
7.
with t as (
  select 1 id_rec, 1 pr from dual union all
  select 2 id_rec, 1 pr from dual union all
  select 3 id_rec, 2 pr from dual union all
  select 4 id_rec, 3 pr from dual union all
  select 5 id_rec, 4 pr from dual
  )




мне нужно добавить несколько пустых строчек count = 4-pr

т.е. должно получиться

1 11 null1 null1 null2 12 null2 null2 null3 23 null3 null4 34 null5 4
...
Рейтинг: 0 / 0
Как добавить несколько пустых строк после определенной строки
    #39777451
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12c
Код: 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.
with t as (
  select 1 id_rec, 1 pr from dual union all
  select 2 id_rec, 1 pr from dual union all
  select 3 id_rec, 2 pr from dual union all
  select 4 id_rec, 3 pr from dual union all
  select 5 id_rec, 4 pr from dual union all
  select 6 id_rec, 8 pr from dual
  )
select id_rec, decode(v, 1, pr) pr
from t,
lateral(select rownum v from dual connect by level <= 5 - pr);

    ID_REC         PR
---------- ----------
         1          1
         1
         1
         1
         2          1
         2
         2
         2
         3          2
         3
         3
         4          3
         4
         5          4
         6          8

15 rows selected.
...
Рейтинг: 0 / 0
Как добавить несколько пустых строк после определенной строки
    #39777460
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
with t as (
  select 1 id_rec, 1 pr from dual union all
  select 2 id_rec, 1 pr from dual union all
  select 3 id_rec, 2 pr from dual union all
  select 4 id_rec, 3 pr from dual union all
  select 5 id_rec, 4 pr from dual union all
  select 6 id_rec, 8 pr from dual
  )
select id_rec, decode(level, 1, pr) pr
from t
start with id_rec is not null
connect by prior id_rec = id_rec and prior dbms_random.value is not null and level <= 5 - pr;

    ID_REC         PR
---------- ----------
         1          1
         1
         1
         1
         2          1
         2
         2
         2
         3          2
         3
         3
         4          3
         4
         5          4
         6          8

15 rows selected.
...
Рейтинг: 0 / 0
Как добавить несколько пустых строк после определенной строки
    #39777466
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

Спасибо
...
Рейтинг: 0 / 0
Как добавить несколько пустых строк после определенной строки
    #39777467
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
with t as (
  select 1 id_rec, 1 pr from dual union all
  select 2 id_rec, 1 pr from dual union all
  select 3 id_rec, 2 pr from dual union all
  select 4 id_rec, 3 pr from dual union all
  select 5 id_rec, 4 pr from dual union all
  select 6 id_rec, 8 pr from dual
  )
select *
from t
model unique single reference
partition by (id_rec)
dimension by (1 rn)
measures (pr)
rules upsert iterate(4) until (iteration_number > 3 - pr[1])
(pr[iteration_number + 1] = pr[cv()]
)
order by id_rec, rn;

    ID_REC         RN         PR
---------- ---------- ----------
         1          1          1
         1          2
         1          3
         1          4
         2          1          1
         2          2
         2          3
         2          4
         3          1          2
         3          2
         3          3
         4          1          3
         4          2
         5          1          4
         6          1          8

15 rows selected.
...
Рейтинг: 0 / 0
Как добавить несколько пустых строк после определенной строки
    #39777470
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
with t as (
  select 1 id_rec, 1 pr from dual union all
  select 2 id_rec, 1 pr from dual union all
  select 3 id_rec, 2 pr from dual union all
  select 4 id_rec, 3 pr from dual union all
  select 5 id_rec, 4 pr from dual union all
  select 6 id_rec, 8 pr from dual
  ),
 s (id_rec, pr, lvl) as
 (select id_rec, pr, 1 lvl
  from t
  union all
  select s.id_rec, s.pr, s.lvl + 1
  from t, s
  where s.id_rec = t.id_rec and s.lvl <= 4 - t.pr
 )
select id_rec, decode(lvl, 1, pr) pr
from s
order by id_rec, pr;

    ID_REC         PR
---------- ----------
         1          1
         1
         1
         1
         2          1
         2
         2
         2
         3          2
         3
         3
         4          3
         4
         5          4
         6          8

15 rows selected.
...
Рейтинг: 0 / 0
Как добавить несколько пустых строк после определенной строки
    #39777479
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проще надо быть :)
Код: 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.
with t as (
  select 1 id_rec, 1 pr from dual union all
  select 2 id_rec, 1 pr from dual union all
  select 3 id_rec, 2 pr from dual union all
  select 4 id_rec, 3 pr from dual union all
  select 5 id_rec, 4 pr from dual union all
  select 6 id_rec, 8 pr from dual
  )
, mult(n) as (select rownum from dual connect by level <=4 )
select id_rec, decode(n,pr,pr,null,pr) pr
  from t
     , mult m
where m.n(+)>=pr;
    ID_REC         PR
---------- ----------
         1          1
         1 
         1 
         1 
         2          1
         2 
         2 
         2 
         3          2
         3 
         3 
         4          3
         4 
         5          4
         6          8
15 rows selected

SQL> 
...
Рейтинг: 0 / 0
Как добавить несколько пустых строк после определенной строки
    #39777491
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,

Как раз хотел только что такой вариант написать :)
...
Рейтинг: 0 / 0
Как добавить несколько пустых строк после определенной строки
    #39777503
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
AmKad,

еще забыл xmltable, group by, powermultiset, и тд
...
Рейтинг: 0 / 0
Как добавить несколько пустых строк после определенной строки
    #39777514
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender,

А с group by как? Не перечислять же 4-5 раз элементы в grouping sets?
...
Рейтинг: 0 / 0
Как добавить несколько пустых строк после определенной строки
    #39777604
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadА с group by как?group by id_rec, pr, cube(0,1)
having grouping_id(0,1) <= 4 - pr
...
Рейтинг: 0 / 0
Как добавить несколько пустых строк после определенной строки
    #39778038
merch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad вернулся.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как добавить несколько пустых строк после определенной строки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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