So, what you are trying to do is, for each employee planid record, figure out which of the 20 employer planids it matches, and get the data into that column? How about a query like this:
Code:
SELECT
TEB.Employer_ID,
TEB.Employee_ID,
SUM(IIF (TEB.PlanID = TPL.PlanID_1,TEB.Plan_Cost,0)) AS PlanID_1_Cost,
SUM(IIF (TEB.PlanID = TPL.PlanID_2,TEB.Plan_Cost,0)) AS PlanID_2_Cost,
SUM(IIF (TEB.PlanID = TPL.PlanID_3,TEB.Plan_Cost,0)) AS PlanID_3_Cost,
etc for all 20
FROM Plan_Listing AS TPL INNER JOIN Employee_Benefits AS TEB
ON TPL.Employer_ID = TEB.Employer_ID
GROUP BY TEB.Employer_ID, TEB.Employee_ID
Note that I didn't see anything in Table 2 that had value, because the key of table 1 was already in table 3. If the Employer_ID is not on Table 3, then the bind would need to include another INNER JOIN to get the Employer_ID for each Employee_ID.