Свертывание нескольких строк в одну в SQL - PullRequest
0 голосов
/ 24 августа 2018

Как мне свернуть значения (предпочтительно с использованием PL / SQL) в разных столбцах для одного и того же человека A в один столбец?

Я хочу преобразовать это:

    NAME  SUB1  SUB2    SUB3    SUB4
     A                          PASS
     A                  PASS    
     A          PASS        
     A   PASS           

в:

     NAME   SUB1    SUB2    SUB3    SUB4
      A     PASS    PASS    PASS    PASS

Я пытался использовать функцию «вещи», но было бы хорошо объединить все значения в одном поле.Есть ли способ сделать это?

1 Ответ

0 голосов
/ 25 августа 2018

Куча MAXs делает свою работу (по крайней мере, в соответствии с тем, что вы опубликовали до сих пор).

SQL> with test (name, sub1, sub2, sub3, sub4) as
  2    (select 'a', null, null, null, 'pass' from dual union all
  3     select 'a', null, null, 'pass', null from dual union all
  4     select 'a', null, 'pass', null, null from dual union all
  5     select 'a', 'pass', null, null, null from dual
  6    )
  7  select name, max(sub1) sub1, max(sub2) sub2, max(sub3) sub3, max(sub4) sub4
  8  from test
  9  group by name;

N SUB1 SUB2 SUB3 SUB4
- ---- ---- ---- ----
a pass pass pass pass

SQL>

Кстати, вы на самом деле хотели сказать «желательно использовать SQL »? Зачем вам использовать PL / SQL?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...