У меня есть цепочка запросов - эти данные переходят из таблицы в запрос на выборку, затем в запрос на объединение, затем в другой запрос на выборку, а затем в кросс-таблицу. Каждый запрос работает на каждом шаге, пока я не попаду в кросс-таблицу. В этот момент я получаю сообщение об ошибке, что поле из исходной таблицы является обязательным, но недоступным.
Вот цепочка запросов:
Первый запрос на выборку, называемый HSICInfantsSummary
SELECT
Dates.[Report type], Dates.Start, Dates.End,
HSICInfantsReport.CHILD_CONTACT_ID AS ID,
.....
FROM ((HSICInfantsReport
INNER JOIN HSInterconceptionReport ON HSICInfantsReport.CHILD_CONTACT_ID = HSInterconceptionReport.CLIENTUNIQUEIDENTIFICATION)
INNER JOIN HSDemographicsReport ON HSICInfantsReport.CHILD_CONTACT_ID = HSDemographicsReport.CONTACT_ID)
INNER JOIN (Dates INNER JOIN [Active client list] ON Dates.[Report type] = [Active client list].[Report type]) ON HSICInfantsReport.CHILD_CONTACT_ID = [Active client list].ClientID;
Это входит в запрос Union под названием Сведения о страховании :
select "Client" as type, CLIENTUNIQUEIDENTIFICATION as ID, Admin_Date, Insurance from HSInterconceptionReport
union all select "Client", CONTACT_ID, admin_date, insurance from HSPPScreeningReport
union all select "Client", CONTACT_ID, admin_date, insurance from HSPreconceptionReport
union all select "Client", CLIENTUNIQUEIDENTIFICATION, AdminDate, HealthInsuranceTypesIDs from HSPrenatalScreeningReport
union all select "Infant", format(ID) & " - " & format(DOB) & " - " & birthorder, Admin_date, BabyInsurance from HSICInfantsSummary
UNION ALL select "Infant", format(ID) & " - " & format(DOB & " - " & birthorder), Admin_Date, BBYInsurance from HSPPInfantsSummary;
Это входит в другой запрос на выборку, который называется Сводка по страхованию - клиент :
SELECT
[All participants summary].[report type],
[Insurance detail].type,
[Insurance detail].ID,
.....
FROM [Insurance detail]
INNER JOIN [All participants summary] ON [Insurance detail].ID = [All participants summary].ID
GROUP BY
[All participants summary].[report type],
[Insurance detail].type,
[Insurance detail].ID,
....
HAVING ((([Insurance detail].type)="Client") AND (([Insurance detail].Admin_Date)=(select max(admin_date) from [insurance detail] T where T.id=[insurance detail].id)))
ORDER BY [Insurance detail].ID, [All participants summary].EnrolledDate;
Этот запрос работает нормально и дает ожидаемые результаты. Затем я хочу сделать кросс-таблицу одного столбца данных:
TRANSFORM Count([Insurance summary - client].ID) AS CountOfID
SELECT [Insurance summary - client].[report type]
FROM [Insurance summary - client]
GROUP BY [Insurance summary - client].[report type]
PIVOT [Insurance summary - client].Insured;
И вот где оно ломается. Этот запрос должен знать поле «ID» из страхового сводного клиента, но он, похоже, хочет вернуться к таблице, которая является исходным источником для идентификатора, и не находит то, что ему нужно. Сообщение об ошибке:
![enter image description here](https://i.stack.imgur.com/FR9DL.jpg)
Можете ли вы сказать мне, почему это происходит, и, что более важно, как обойти это?