If your database is Oracle 11g or later you can use the unpivot clause
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 ;
This returns:
USR_ROLE ROLE_COUNT
ROLE3 3
ROLE1 2
ROLE2 2
You could use this query as an opaque view in the RPD