Recentemente, codifiquei um procedimento armazenado no SQL Server 2019 (14.0.3192.2) na AWS que utilizou a função STRING_AGG
sem problemas. Quando mudei o código para meu banco de dados de teste local, ele reclamou desse método.
Após a pesquisa , continuei a atualizar meu serviço de banco de dados sql server local da versão 14.x para a versão 15.0.2 mais recente e tentei instalar o sproc novamente; ao fracasso
Sintaxe incorreta perto de '"'',STRING_AGG(ActionDATE, ''","''),''"'.
Esse recurso é viável desde o SQL Server 2017... portanto, estar ausente na versão local de 2019 é um pouco intrigante.
Pergunta
Que recurso tenho além de instalar o SQL Server 2019 Developer Edition para resolver esse problema?
Intenção
Observe que a linha de falha com STRING_AGG
está tentando criar uma submatriz JSON de datas, como
[ '01/24/2020', '01/28/2020' ]
:
Código
CREATE PROCEDURE [hcwfba].[GetOperationsAndActionDates]
@operationId int,
@locationId int
AS
WITH [DATA] AS (SELECT DISTINCT id_Operation, id_Location , CONVERT(varchar, ActionDATE ,101) AS [ActionDATE] FROM OperationDetail)
SELECT distinct
PD.id_Operation
, PD.id_Location
, JSON_QUERY((SELECT CONCAT(''["'',STRING_AGG(ActionDATE, ''","''),''"]'') FROM [DATA] DT2 WHERE DT2.id_Location = PD.id_Location)) As Dates
FROM [DATA] PD
WHERE PD.id_Operation = @operationId
AND PD.id_Location = @locationId
FOR JSON AUTO;
RETURN @@ROWCOUNT
Resultado JSON
[
{
"id_Operation": 13,
"id_Location": 8675309,
"Dates": [
"12/03/2018",
"08/27/2018",
"10/22/2018"
]
}
]
De acordo com meus comentários: você tentou usar a
STRING_AGG()
função com um caso de teste muito simples para confirmar que é um problema com a função e não com sua sintaxe em sua consulta principal?Parece que sua sintaxe não foi formatada corretamente, em vez de a
STRING_AGG()
função não estar disponível na versão da sua instância.