Несколько столбцов в разных строках в SQL - PullRequest
0 голосов
/ 12 марта 2019

Я хочу отобразить разные строки для данных, хранящихся в разных столбцах

ATTRIBUTE_CHAR1   ATTRIBUTE_CHAR3   ATTRIBUTE_CHAR3 
    ABC1              EFG2             HIJ3 

ROW    ALL ATTRIBUTE
1       ABC1
2       EFG2
3       HIJ3 

Пожалуйста, предложите SQL-запрос

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

В Oracle 12c + вы можете использовать боковое соединение:

select x.attribute_char
from t cross apply
     (select attribute_char1 as attribute_char from dual union all
      select attribute_char2 as attribute_char from dual union all
      select attribute_char3 as attribute_char from dual
     ) x;

Вы также можете использовать case в любой версии Oracle:

select (case when n.n = 1 then attribute_char1
             when n.n = 2 then attribute_char2
             when n.n = 3 then attribute_char3
        end) as attribute_char
from t cross join
     (select 1 as n from dual union all
      select 2 as n from dual union all
      select 3 as n from dual
     ) n;

Преимущество этих подходов состоит в том, что таблица сканируется только один раз. Это может быть особенно важно, если «таблица» действительно сложный запрос или представление.

0 голосов
/ 12 марта 2019

использовать объединение всех

select ATTRIBUTE_CHAR1
from table
union all

select ATTRIBUTE_CHAR3
from table
union all

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