2015-01-22 2 views
0

У меня есть запрос, как показано ниже.Oracle: Analytics: как сортировать, используя некоторые имена столбцов

select organization_name, is_manager, is_vendor, is_engineer 
from table_org_roles; 

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

organization_name|is_manager|is_vendor|is_engineer 
--------------------------------------------------- 
Org_A   |Yes  |No  |No   
Org_B   |No  |Yes  |No   
Org_C   |No  |No  |Yes 
Org_D   |Yes  |No  |Yes 

Однако я хотел сделать SQL запрос, который будет упорядоченный по имени роль вознесся, который является именем столбца. Как я могу сделать запрос, который будет отображаться, как показано ниже:

Roles(ASC) | Organization 
------------------------- 
is_engineer| Org_C 
is_engineer| Org_D 
is_manager | Org_A 
is_manager | Org_D 
is_vendor | Org_B 

Можно ли сделать такой запрос с помощью Google Analytics? Спасибо вам большое заблаговременно.

+0

Возможно ли, что менеджер также является инженером? – jarlh

+0

Привет jarlh, да, это можно сделать с помощью структуры таблицы. Спасибо – Jemru

+0

@Jemry, так что если ORG_D - ​​менеджер и инженер, каков ожидаемый результат? – jarlh

ответ

1

Привет, это может быть сделано с помощью операции UNPIVOT, а также. Смотри ниже.

create table test_stack 
(
organization_name varchar2(100), 
is_manager varchar2(10), 
is_vendor varchar2(20), 
is_engineer varchar2(20) 
); 
/
insert into test_stack 
select 'org_A','Yes','No','No' from dual 
union all 
select 'org_B','No','Yes','No' from dual 
union all 
select 'org_C','No','No','Yes' from dual 
union all 
select 'org_D','Yes','No','Yes' from dual; 




select organization_name,roles 
    from test_stack 
    unpivot include nulls (existence for Roles in (IS_MANAGER as 'IS_MANAGER',IS_VENDOR as 'IS_VENDOR',IS_ENGINEER as 'IS_ENGINEER')) 
    where existence ='Yes'; 
+0

Привет, Асфакул Ислам, спасибо, ваш ответ интересен. Я попробовал, но я получаю «ORA-01748: здесь разрешены только простые имена столбцов», потому что мой фактический SQL использует две таблицы: From TableA, TableB. Затем в моей колонке IS_MANAGER у меня есть TableA.IS_MANAGER. Вот почему я получаю ошибку. Был бы признателен, если вы также советы, как справиться с этой ошибкой при помощи шарнира. Я все еще искал сеть. Спасибо. – Jemru

+1

@Jemru Hi Jemru, Извините, меня уже не было. Получили ли вы свой ответ? – redsoxlost

1

Попробуйте непроверенный запрос:

select * (
select organization_name, is_manager case is_manager WHEN Yes THEN "is_manager" ELSE "" END As Roles from table_org_roles where is_manager = "YES" 
union all 
select organization_name, is_engineer case is_engineer WHEN Yes THEN "is_engineer " ELSE "" END from table_org_roles where is_engineer= "YES" 
union all 
select organization_name, is_vendor case is_vendor WHEN Yes THEN "is_vendor" ELSE "" END from table_org_roles where is_vendor= "YES" 
) order by Roles 
+0

Привет, Дженс, спасибо за ваше решение, это помогло мне! Но я просто использовал «СОЮЗ», чтобы избежать дублирования. Благодарю. – Jemru

Смежные вопросы