我试图让多个员工家属在我的输出文件上的同一行数据。我可以得到一个依赖于员工的行,但不能超过一行。
我尝试使用Left Join加入AutoNum,因此它与员工和家属匹配,但我仍然只拉一个依赖。
有关如何在SQL Access查询中的一行上获取所有需要的数据的任何想法?
SELECT E.FirstName, E.LastName, E.SSN,
Switch(E.MemberStartDate<="2018-01-01" And E.MemberEndDate>="2018-12-31","X") AS Cov12Months,
D.DepFirstName, D.DepLastName, D.ResponsibleIndividualSSN, D.CoveredIndividualSSN, D.DepDOB,
Switch(D.DepStartDate<="2018-01-01" And D.DepEndDate>="2018-12-31","X") AS DCov12Months,
FROM EMP_Test AS E LEFT JOIN Dep_Test AS D ON E.AutoNum = D.AutoNum;
以下是我目前的结果示例图片。正如你所看到的,Charles Soper的记录是正确的,因为他只有一个依赖者。但苏珊史密斯有两个记录,因为她有两个家属。我需要两个家属
VBA方法是注释链接中提供的一种方法和示例。 CROSSTAB也是一种可能性。每种方法都有其优点和缺点。
考虑:
TRANSFORM Max([DepFirstName] & " " & [DepLastName]) AS DepName
SELECT EmpDeps.EmpID
FROM EmpDeps
GROUP BY EmpDeps.EmpID
PIVOT DCount("*","EmpDeps","EmpID='" & [EmpID] & "' AND ID<" & [ID])+1 In (1,2,3,4,5,6,7,8,9,10);
这需要表中的唯一标识符字段 - 自动编号应该服务。在PIVOT子句中定义列名允许查询足够稳定以用作报告RecordSource。此查询可以加入Employees表以检索其他员工信息。