Access 2007 SQL объединяет несколько результатов в один - PullRequest
0 голосов
/ 18 марта 2020

У меня проблема с написанием запроса для генерации одного строкового результата из нескольких записей.

Из-за ограничений, которые у меня есть в работе, я использую Access 2007 в качестве серверной части и Excel 2007 в качестве внешний интерфейс - ввод данных / отчеты с пользовательскими формами Excel, которые подключаются к базе данных. Мои пользователи не имеют / не могут иметь доступ к Access, только Excel и системы, с которыми мы работаем, не могут быть запущены с использованием Excel в качестве хранилища данных.

Отчет, который я пытаюсь сгенерировать нужно перевести результат так:

moduleID | departmentID  
115      |  7  
116      |  7  
116      | 23  
117      |  7  
117      | 23

В это:

moduleID | departments  
115      | 7  
116      | 7, 23  
117      | 7, 23

Поскольку я подключаюсь к базе данных через соединение в VBA, мне кажется, что я не могу использовать пользовательские функции, которые кажутся основными решениями, и я считаю, что решение XML Path также несовместимо с Access.

Я наткнулся на решение, которое каким-то образом использует IIF и имеет такая строка в запросе:

 IIF(ISNULL(departments), departmentID, departments & ', ' & departmentID)

, но у меня возникают проблемы с ее адаптацией.

Пока у меня есть этот запрос, который дает СЧЕТ отделов:

SELECT
 moduleID,
 COUNT(departmentID) AS departments
 FROM (
  SELECT 
   forecastingModules.moduleID, Forecasting.departmentID
  FROM
   Forecasting
   LEFT JOIN forecastingModules 
   ON Forecasting.editID = forecastingModules.editID
  GROUP BY
   forecastingModules.moduleID, Forecasting.departmentID
 )
GROUP BY
 moduleID;

Спасибо за любую помощь, которую вы можете оказать, чтобы указать мне правильное направление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...