在一个数据行SQL上插入多个记录

问题描述 投票:-1回答:1

我试图让多个员工家属在我的输出文件上的同一行数据。我可以得到一个依赖于员工的行,但不能超过一行。

我尝试使用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的记录是正确的,因为他只有一个依赖者。但苏珊史密斯有两个记录,因为她有两个家属。我需要两个家属enter image description here

sql ms-access sequential
1个回答
1
投票

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表以检索其他员工信息。

© www.soinside.com 2019 - 2024. All rights reserved.