Oracle SQL Pivot запросит дополнительный столбец из той же таблицы - PullRequest
0 голосов
/ 09 января 2019

Поскольку я новичок в функции PIVOT, мне трудно ответить на следующий запрос:

Пример данных:

Name  |  Tab | Attribute | Value
====================================
Set1  |  A   |  Street   | Wall St.
Set1  |  A   |  ZIP      | 12345
Set1  |  B   |  Street   | Route 66
Set1  |  B   |  No       | 7
Set1  |  C   |  Street   | (null)
Set2  |  A   |  Street   | Oxford St
Set2  |  A   |  ZIP      | (null)
Set2  |  B   |  No       | (null)

Ожидаемый результат:

Name  | Street_from_Tab_A  |  ZIP  | No
=========================================
Set1  | Wall St.           | 12345 | 7
Set2  | Oxford St          | (null)| (null)

Что я пробовал до сих пор:

select name, street_from_tab_a, zip, no from my_table
PIVOT (max(value) for attribute in ('Street' as street_from_tab_a, 'ZIP' as ZIP, 'No' as No)) 
where tab = 'A';

Как добавить «Нет» на вкладке «B» в качестве столбца?

1 Ответ

0 голосов
/ 09 января 2019

Похоже, вам нужно повернуть комбинацию Tab и Attribute:

SELECT name, street_from_tab_a, zip, no
  FROM My_Table
 PIVOT (max(value)
   FOR (tab, attribute) in (('A','Street') street_from_tab_a
                           ,('A','ZIP') zip
                           ,('B','No') no)) pvt
...