2013-09-26 50 views
1

下面的目標,我有一個表像下面:如何實現OBIEE儀表盤

id name role1 role2 role3 
------------------------- 
1 John y n  y 
2 Pete n y  y 
3 Den n y  y 
4 Mat y n  n 

後,我用role1='Y'過濾表,我失去了皮特和Den。

如何使用的分析建立一個表像下面:

 Count (Y) 
Role1 3 
Role2 2 
Role3 3 

我什麼都試過。請幫助

感謝

+0

你是否在使用g Oracle數據庫?我可以使用11g –

回答

1

如果你的數據庫是Oracle 11g或以上版本,你可以使用逆透視條款

SELECT usr_role, 
    COUNT(*) role_count 
FROM 
    (SELECT * 
    FROM table_name 
    UNPIVOT (hasRole FOR usr_role IN (role1,role2,role3)) 
    WHERE hasRole = 'y' 
) 
GROUP BY usr_role ; 

這將返回:

USR_ROLE ROLE_COUNT 
ROLE3  3 
ROLE1  2 
ROLE2  2 

您可以使用該查詢作爲RPD中的不透明視圖

+0

上的PIVOT子句發佈答案非常感謝! – haoyun