Выберите все столбцы, но верните значения NULL
в этих столбцах, если у пользователя нет прав доступа к метаданным:
Установка Oracle :
CREATE TABLE metadata ( org_id, Username, short_desc ) AS
SELECT 1, 'aa', 'Industry' FROM DUAL UNION ALL
SELECT 1, 'rk', 'sector' FROM DUAL UNION ALL
SELECT 1, 'rk', 'Industry' FROM DUAL UNION ALL
SELECT 1, 'pa', 'sector' FROM DUAL UNION ALL
SELECT 1, 'pa', 'Industry' FROM DUAL UNION ALL
SELECT 1, 'pa', 'Subindustry' FROM DUAL;
CREATE TABLE master ( org_id, ID, sector, Industry, Subindustry ) AS
SELECT 1, '594918104', 'Technology', 'Information Technology', 'CyberSecurity' FROM DUAL UNION ALL
SELECT 1, 'G0464B107', 'Financial Services', 'Financials', 'Banks' FROM DUAL
Запрос
SELECT md.username,
m.id,
NVL2( md.sector, m.sector, NULL ) AS sector,
NVL2( md.industry, m.industry, NULL ) AS industry,
NVL2( md.subindustry, m.subindustry, NULL ) AS subindustry
FROM ( SELECT *
FROM metadata
PIVOT ( MAX(1) FOR short_desc IN (
'sector' AS sector,
'Industry' AS industry,
'Subindustry' AS subindustry
) ) ) md
INNER JOIN master m
ON ( md.org_id = m.org_id )
WHERE md.org_id = 1
Выходы
USERNAME | ID | SECTOR | INDUSTRY | SUBINDUSTRY
:------- | :-------- | :----------------- | :--------------------- | :------------
rk | G0464B107 | Financial Services | Financials | <em>null</em>
rk | 594918104 | Technology | Information Technology | <em>null</em>
aa | G0464B107 | <em>null</em> | Financials | <em>null</em>
aa | 594918104 | <em>null</em> | Information Technology | <em>null</em>
pa | G0464B107 | Financial Services | Financials | Banks
pa | 594918104 | Technology | Information Technology | CyberSecurity
дБ <> скрипка здесь