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

时间:2019-04-23 13:53:20

标签: sql ms-access sequential

我正在尝试让多个雇员家属在我的输出文件中位于同一行数据中。我可以得到一个依赖于该雇员的行,但不能超过一个。

我尝试在加入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的记录是正确的,因为他只有一个受抚养人。但是苏珊·史密斯(Susan Smith)有两个记录,因为她有两个家属。我需要两个行enter image description here

的受抚养人

1 个答案:

答案 0 :(得分:1)

VBA方法是注释链接中提供的一种方法和示例。交叉标签也是可能的。每种方法都有其优点和缺点。

考虑:

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。可以将此查询连接到“雇员”表以检索其他雇员信息。