Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как слить несколько записей в одну / 4 сообщений из 4, страница 1 из 1
22.02.2022, 12:57
    #40135833
alx71
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как слить несколько записей в одну
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
select 1 F1,null F2,null F3,null F4 from dual
union all
select null F1,1 F2,null F3,null F4 from dual
union all
select null F1,null F2,1 F3,null F4 from dual
union all
select null F1,null F2,null F3,1 F4 from dual
union all
select null F1,null F2,null F3,1 F4 from dual

        F1         F2         F3         F4
---------- ---------- ---------- ----------
         1
                    1
                               1
                                          1
                                          1



Хочется объединить в одну несколько записей, у которых значение столбца not null только в одной записи. Т.е. должно быть:

Код: plsql
1.
2.
3.
F1   F2   F3  F4
1     1    1    1
null null null 1
...
Рейтинг: 0 / 0
22.02.2022, 13:03
    #40135835
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как слить несколько записей в одну
alx71
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
select 1 F1,null F2,null F3,null F4 from dual
union all
select null F1,1 F2,null F3,null F4 from dual
union all
select null F1,null F2,1 F3,null F4 from dual
union all
select null F1,null F2,null F3,1 F4 from dual
union all
select null F1,null F2,null F3,1 F4 from dual

        F1         F2         F3         F4
---------- ---------- ---------- ----------
         1
                    1
                               1
                                          1
                                          1



Хочется объединить в одну несколько записей, у которых значение столбца not null только в одной записи. Т.е. должно быть:

Код: plsql
1.
2.
3.
F1   F2   F3  F4
1     1    1    1
null null null 1



А чем отличается 4 и 5 запись?
...
Рейтинг: 0 / 0
22.02.2022, 13:10
    #40135838
alx71
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как слить несколько записей в одну
Ничем.
...
Рейтинг: 0 / 0
22.02.2022, 14:21
    #40135869
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как слить несколько записей в одну
alx71,

Код: 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.
62.
63.
SQL> set null "-"
SQL> /

        ID A B  C
---------- - -- --
         1 a -  -
         1 b -  -
         1 c -  -
         1 - d  -
         1 - e  z
         1 - -  f
         1 - -  g
         1 - -  h
         1 - -  i
         2 a -  -
         2 b -  -
         2 - c  -
         2 - d  -
         2 - -  e

14 rows selected.
SQL> ed
Wrote file afiedt.buf

  1  with s1 as(
  2  select 1 id,       'a' a,  cast(null as varchar2(2)) b,     cast(null as varchar2(2)) c from dual union all
  3  select 1,  'b',    null,   null from dual union all
  4  select 1,  'c',    null,   null from dual union all
  5  select 1,  null,   'd',    null from dual union all
  6  select 1,  null,   'e',    'z' from dual union all
  7  select 1,  null,   null,   'f' from dual union all
  8  select 1,  null,   null,   'g' from dual union all
  9  select 1,  null,   null,   'h' from dual union all
 10  select 1,  null,   null,   'i' from dual union all
 11  select 2,  'a',    null,   null from dual union all
 12  select 2,  'b',    null,   null from dual union all
 13  select 2,  null,   'c',    null from dual union all
 14  select 2,  null,   'd',    null from dual union all
 15  select 2,  null,   null,   'e'  from dual),
 16  s2 as (
 17  SELECT
 18     tt.*
 19    ,row_number() over (partition by id,f order by t) rn FROM s1
 20  UNPIVOT (t FOR f IN (a AS 'a',b AS 'b',c AS 'c')) tt
 21  )
 22  select * from s2
 23  pivot (max(t) for f in ('a' a,'b' b,'c' c))
 24* order by 1,2
 25  /

        ID         RN A  B  C
---------- ---------- -- -- --
         1          1 a  d  f
         1          2 b  e  g
         1          3 c  -  h
         1          4 -  -  i
         1          5 -  -  z
         2          1 a  c  e
         2          2 b  d  -

7 rows selected.

SQL>



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


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