Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как добавить несколько пустых строк после определенной строки / 12 сообщений из 12, страница 1 из 1
21.02.2019, 16:59
    #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
21.02.2019, 17:09
    #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
21.02.2019, 17:18
    #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
21.02.2019, 17:30
    #39777466
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить несколько пустых строк после определенной строки
AmKad,

Спасибо
...
Рейтинг: 0 / 0
21.02.2019, 17:34
    #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
21.02.2019, 17:47
    #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
21.02.2019, 18:00
    #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
21.02.2019, 18:15
    #39777491
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как добавить несколько пустых строк после определенной строки
andrey_anonymous,

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

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

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


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