select d.username,d.account_status,d.Lock_date,d.expiry_date,d.created,r.granted_role
from dba_users d join DBA_ROLE_PRIVS r on D.USERNAME = R.GRANTEE
where D.USERNAME= UPPER ('mahi')
AND d.username NOT IN (select distinct owner schema_name from dba_segments);
Now I want to show GRANTED_ROLE in single rows, I have used here function wm_concat for that.
select d.username,d.account_status,d.Lock_date,d.expiry_date,d.created,to_char(wm_concat(r.granted_role)) as role
from dba_users d join DBA_ROLE_PRIVS r on D.USERNAME = R.GRANTEE
where D.USERNAME= UPPER ('mahi')
AND d.username NOT IN (select distinct owner schema_name from dba_segments)
group by d.username,d.account_status,d.Lock_date,d.expiry_date,d.created;