hi Mark,
are you using mysql? if not, which db?...there may be other options that using a set of sub-queries.
if you're using mysql, you may wish to to try to ditch the separate subqueries and create one derived table defined in a join. for an example see here. that way you could in theory bring in employee & role info in one go.
question...was there a particular reason why you went with the subqueries instead of creating the report off of the 4 tables? is because of duplicates?
-jamie