Вставка нескольких записей в одну строку данных SQL - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь заставить нескольких иждивенцев сотрудника находиться в одной строке данных в моем выходном файле.Я могу получить одного зависимого от ряда работника, но не более одного.

Я попытался использовать левое соединение, где я присоединяюсь к 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;

Ниже приведен пример изображения моих результатов в настоящее время.Как видите, запись Чарльза Сопера верна, поскольку у него только один иждивенец.Но у Сьюзен Смит две записи, потому что у нее два иждивенца.Мне нужны оба иждивенца в одной строке enter image description here

1 Ответ

1 голос
/ 23 апреля 2019

Метод 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);

Для этого требуется поле уникального идентификатора в таблице - должен использоваться autonumber.Определение имен столбцов в предложении PIVOT позволяет запросу быть достаточно стабильным для использования в качестве отчета RecordSource.Этот запрос можно присоединить к таблице «Сотрудники» для получения дополнительной информации о сотрудниках.

...