SELECT [P-EmpList].LastName, [P-EmpList].FirstName,
INNER JOIN (
SELECT SAPID, MAX(CompletedDate) As 'Most Recent'
GROUP BY SAPID
) AS ProjectCrewAllocation
ON [P-EmpList].SAPID = ProjectCrewAllocation.SAPID
**Error "The specified field 'ProjectCrewAllocation.Completed Date' could refer to more than one table listed in the FROM clause of your SQL statement.
On the line that reads "As ProjectCrewAllocation" you are defining a virtual table. Then there is the database table ProjectCrewAllocation. It is the conflict between these two that you are seeing in your query.
The recommended best practice is to assign short aliases to tables, and refer to columns by those aliases. For example like shown below. This may not be complete because I couldn't figure out where the column IntProj should come from.
[P-EmpList] AS pe
MAX(pca.CompletedDate) AS CompletedDate
ProjectCrewAllocation AS pca
) AS pca2 ON
pe.SAPID = pca2.SAPID;
In the above, the line that reads ProjectCrewAllocation AS pca tells SQL Server that you are going to refer to the ProjectCrewAllocation table using the alias pca where that table is within scope in the query (in this case, the subquery).