powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как слить несколько записей в одну
4 сообщений из 4, страница 1 из 1
Как слить несколько записей в одну
    #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
Как слить несколько записей в одну
    #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
Как слить несколько записей в одну
    #40135838
alx71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничем.
...
Рейтинг: 0 / 0
Как слить несколько записей в одну
    #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
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как слить несколько записей в одну
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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