Use this script to retrieve the group memberships from the published database in Project Server 2007 and 2010
SQL
Edit|Remove
-- Project Server 2007 / 2010 
SELECT  WSG.WSEC_GRP_NAME AS [Group], R.RES_NAME AS Member 
FROM   MSP_WEB_SECURITY_GROUPS AS WSG 
INNER JOIN  MSP_WEB_SECURITY_GROUP_MEMBERS AS WSGM ON WSG.WSEC_GRP_GUID = WSGM.WSEC_GRP_GUID  
INNER JOIN   MSP_RESOURCES AS R ON WSGM.WRES_GUID = R.RES_SECURITY_GUID 
ORDER  BY [Group], Member
For Project Server 2013 you need to add a "pub." before the table name (e.g. pub.MSP_WEB_SECURITY_GROUPS).
Also there is an additional table that holds the reference between the claim and the guid. The resulting statement is:
SQL
Edit|Remove
-- Project Server 2013 
SELECT  WSG.WSEC_GRP_NAME AS [Group], R.RES_NAME AS Member 
FROM   pub.MSP_WEB_SECURITY_GROUPS AS WSG 
INNER JOIN  pub.MSP_WEB_SECURITY_GROUP_MEMBERS AS WSGM ON WSG.WSEC_GRP_GUID = WSGM.WSEC_GRP_GUID  
inner join pub.MSP_WEB_SECURITY_CLAIMS AS WSC on WSC.SECURITY_GUID=wsgm.wres_guid 
INNER JOIN   pub.MSP_RESOURCES AS R ON WSC.ENCODED_CLAIM = R.WRES_ACCOUNT 
ORDER  BY [Group], Member
 
You could use this statement to build a report with SQL Server Reporting Services or Excel if you prefer that.
Cannot be used with a Project Server online (Office 365) environment.