нужно сводить данные - PullRequest
       6

нужно сводить данные

0 голосов
/ 10 октября 2018

У меня есть данные в таблице, как здесь

i have data in a table in the format below

Я пытаюсь преобразовать их в этот формат / желаемый вывод

out put formate

Любая помощь с благодарностью

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы можете использовать PIVOT:

select col1, cat1, cat2
from (
  select t.*, row_number() over (partition by col3 order by col2) as rn
  from t
)
pivot (min(col2) for (col3) in ('CAT1' as "CAT1", 'CAT2' as "CAT2"))
order by rn;

enter image description here

LiveSQL

0 голосов
/ 10 октября 2018

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

Тем не менее, вы можете сделать это в Oracle.Одним из методов является условная агрегация:

select col1,
       max(case when col3 = 'CAT1' then col2 end) as cat1,
       max(case when col3 = 'CAT2' then col2 end) as cat2
from (select t.*, row_number() over (partition by col1, col3 order by col2) as seqnum
      from t
     ) t
group by col1, seqnum
order by col1, seqnum;
...