Я пытаюсь сделать запрос с подзапросом, который объединяет результаты многих строк в одну, в SQL Server.
Когда я запускаю его в Microsoft SQL Server Management Studio, он прекрасно работает!
Запрос выполняется в Microsoft SQL Server Management Studio
Но делая тот же запрос с PHP, я получаю это предупреждение:
Предупреждение: odbc_fetch_array (): ошибка SQL: [Microsoft] [Библиотека курсоров ODBC] в инструкции SELECT есть предложение GROUP BY, состояние SQL SL005 в SQLGetData
SQL:
SELECT CONVERT(VARCHAR(7),[Ficha_Tecnica].DataEntrega,111) as DataEntrega,
[Ficha_Tecnica].CodigoCliente,
[Ficha_Tecnica].CodTipoServico,
count(*) as Contagem,
[Ficha_Tecnica].NumeroOs,
(SELECT CAST([Cartoes].Produto + ',' AS VARCHAR(400))
FROM [Cartoes]
WHERE [Cartoes].NumeroOS = [Ficha_Tecnica].NumeroOs
ORDER BY [Cartoes].Produto
FOR XML PATH('') ) AS Produto2 FROM Ficha_Tecnica WHERE 1=1 and Ficha_Tecnica.DataEntrega >= '2016-01-19'
and Ficha_Tecnica.DataEntrega <= '2016-09-27'
GROUP BY CONVERT(VARCHAR(7),[Ficha_Tecnica].DataEntrega,111)
, [Ficha_Tecnica].CodigoCliente
, [Ficha_Tecnica].CodTipoServico
, [Ficha_Tecnica].NumeroOs
ORDER BY CONVERT(VARCHAR(7),[Ficha_Tecnica].DataEntrega,111) asc
Моя версия PHP 5.6.19
SQL Server 2012
Кто-нибудь знает, что может происходить?
Спасибо!
Я наконец нашел проблему и решение!
После четырех часов попыток!
Я решил проблему создания CAST для столбца, который я делал подзапросом:
CAST(
(SELECT CAST([Cartoes].Produto + ',' AS VARCHAR(400))
FROM [Cartoes]
WHERE [Cartoes].NumeroOS = [Ficha_Tecnica].NumeroOs
ORDER BY [Cartoes].Produto
FOR XML PATH('') )
AS VARCHAR(1000)) AS Produto2
Что происходит, так это то, что что-то не так происходит, когда мы получаем слишком большой столбец с SQL Server с PHP, например, столбцы типа «Текст» или «VARCHAR (MAX)»!
Итак, это все!
Tnx!
Других решений пока нет …