我有一张如下表:
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'
过滤表后,我丢失了Pete和Den。
如何使用分析构建如下表格:
Count (Y)
Role1 3
Role2 2
Role3 3
我尝试了一切。请帮忙
由于
答案 0 :(得分:1)
如果您的数据库是Oracle 11g或更高版本,则可以使用unpivot子句
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中的不透明视图