Oracle - как выбрать несколько строк как одну строку с колонками - PullRequest
0 голосов
/ 11 сентября 2018

Я использую Oracle 12c, и у меня есть данные, возвращающиеся с несколькими строками, которые я хотел бы переключить на один оператор выбора строки с заголовками, описывающими данные. Суть в том, что столбец данных представляет собой CLOB.

Вот пример (на самом деле это будет дюжина строк):

select ID, description, data from dual


|---------------------|------------------|------------------|
|          ID         |     Description  |       Data       |
|---------------------|------------------|------------------|
|          1          |     DescriptionA |      TestA       |
|---------------------|------------------|------------------|
|          2          |     DescriptionB |      TestB       |
|---------------------|------------------|------------------|

Мне бы хотелось, чтобы это выглядело так:

|---------------------|------------------|
|   DescriptionA      |    DescriptionB  |
|---------------------|------------------|
|          TestA      |    TestB         |
|---------------------|------------------|

Любые идеи приветствуются!

Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Здесь также есть опция. Если вы хотите использовать динамические значения вместо жестко заданных для столбца ID, используйте динамический запрос.

  SELECT  MAX(DECODE(T.ID, 1, T.TE)) AS DES1,
          MAX(DECODE(T.ID, 2, T.TE)) AS DES2
          FROM (SELECT 1 as id, 'DescriptionA' AS DES, 'TestA' AS TE FROM DUAL
UNION ALL
  SELECT 2 as id, 'DescriptionB' AS DES, 'TestB' AS TE FROM DUAL)T 
0 голосов
/ 11 сентября 2018

Можно использовать случай, когда

with t(ID, Description,Data) as
    (
      select  1, 'DescriptionA','TestA' from dual
      union all
      select 2, 'DescriptionB','TestB' from dual
    )
    select max( case when Data='TestA' then Data end) as DescriptionA,
    max(case when Data='TestB' then Data end) as DescriptionB from t

DESCRIPTIONA    DESCRIPTIONB
TestA           TestB
...