Hi Laurence. You never mentioned what kind of report it is that you are trying to create. This can be open to lots of interpretation. To get the best answer, I suggest mocking something up and highlighting where you want the user's names to appear.
The best results may come from a User report filtered and grouped by role; or something else depending on what you're looking for.
Sometimes when I'm looking at Job Roles in the Setup area, I want to see more than just the list of job roles - I also want to see which current (or not current) users are assigned to the role. The below text mode columns will work in the Job Roles setup area as columns in a view; or in a Job Roles report:
A list of everyone assigned to the role:
displayname=All Members
listdelimiter=<br>
listmethod=nested(userRoles).lists
shortview=true
textmode=true
type=iterate
valueexpression={user}.{name}
valueformat=HTML
A list of users who are not deactivated, and have logged in within the last six months, assigned to the role:
displayname=Active Members
listdelimiter=<br>
listmethod=nested(userRoles).lists
shortview=true
textmode=true
type=iterate
valueexpression=IF({user}.{isActive},IF(NUMBER(DATEDIFF({user}.{lastLoginDate},$$TODAY))>-180,CONCAT({user}.{name}," - ",{user}.{lastLoginDate}),""))
valueformat=HTML
A list of users who are either deactivated, or have NOT logged in within the last six months, assigned to the role:
displayname=Inactive Members
listdelimiter=<br>
listmethod=nested(userRoles).lists
shortview=true
textmode=true
type=iterate
valueexpression=IF({user}.{isActive}="false",CONCAT({user}.{name}," - DA"),(IF(NUMBER(DATEDIFF({user}.{lastLoginDate},$$TODAY))<-180,CONCAT({user}.{name}," - ",{user}.{lastLoginDate}),"")))
valueformat=HTML