This looks like an EAV (Entity-attribute-value) database design which should only be used for semi-structured data.(Even then XML is probably better.)If you cannot alter the db schema and just want to get a result, something like the following should work:SELECT U.FirstName ,U.LastName ,U.Username ,U.Email ,U.DisplayName ,UP.Country ,UP.MemberNumberFROM Users U LEFT JOIN ( SELECT UP1.userid ,MAX ( CASE WHEN PPD.PropertyName = 'Country' THEN UP1.PropertyValue END ) AS Country ,MAX ( CASE WHEN PPD.PropertyName = 'MemberNumber' THEN UP1.PropertyValue END ) AS MemberNumber FROM UserProfile UP1 JOIN ProfilePropertyDefinition PPD ON UP1.PropertyDefinitionID = PPD.PropertyDefinitionID WHERE PPD.portalid = 0 AND PPD.PropertyName IN ('Country', 'MemberNumber') GROUP BY UP1.userid ) UP ON U.userid = UP.useridWHERE U.IsDeleted = 0 AND EXISTS ( SELECT * FROM UserRoles UR WHERE UR.UserId = UR.UserID AND EXISTS ( SELECT * FROM Roles R WHERE R.RoleID = UR.RoleID AND R.RoleName = 'NNNN' AND R.PortalID = 0 ) )