По какой-то причине мой запрос:
SELECT
MP_SQLQRY_ProjectArchive.ProjectShort,
MP_SQLQRY_ProjectArchive.ProjectName ,
MP_SQLQRY_ProjectArchive.ProjectManagerName ,
ProjectOwnerName,
ProjStateName,
ProjectKategoryShort,
ProjectTypeShort,
MP_SQLQRY_ProjectArchive.ProjectPriority,
DepartmentShort,
ProjectArchivedDate,
CONVERT(NVARCHAR(MAX),ERPAccountCodes.ERPAccountCodes) As ERPAccountCodes
FROM
MP_SQLQRY_ProjectArchive
INNER JOIN
SQLQRY_VALID_PROJECT_ORDER_INFO ON MP_SQLQRY_ProjectArchive.ProjectID = SQLQRY_VALID_PROJECT_ORDER_INFO.ProjectID
INNER JOIN
COM_tbl_MAD_Project ON MP_SQLQRY_ProjectArchive.ProjectID = COM_tbl_MAD_Project.ProjectID
LEFT JOIN
(SELECT
ProjectID,
CONVERT(Nvarchar(max), STUFF((SELECT ';' + [SAPNumber] AS [data()]
FROM [COM_tbl_MAD_ProjectERPAccountCode] t2
WHERE t2.[ProjectID] = t1.[ProjectID]
ORDER BY [SAPNumber]
FOR XML PATH('')), 1, 1, '')) AS ERPAccountCodes
FROM
[COM_tbl_MAD_ProjectERPAccountCode] t1
GROUP BY
[ProjectID], [SAPNumber]) AS ERPAccountCodes ON ERPAccountCodes.ProjectID = COM_tbl_MAD_Project.ProjectID
не вернет значения для столбца ERPAccountCodes. На сервере SQL он работает нормально, и я получаю свои значения, которые разделяются с ;
, как я хочу.
Но когда я запускаю его как внешнее соединение с ADODB в доступе, этот единственный столбец становится пустым.
Я полагаю, что это проблема с доступом или ADODB, но я понятия не имею, что с этим делать
Есть ли альтернатива FOR XML PATH
или есть другой способ сделать это?
Для пояснения, значения возвращают некоторые пустые значения. Не NULL, только эти странные пустые символы, когда я отлаживал в VBA при доступе, хотя я пытался преобразовать его в NVarchar, который теоретически должен работать очень хорошо.
Слева - Excel, созданный из вызова MS Access SQL , Справа от SQL Студия управления сервером: