Sql-Server
SQL Server LocalDB V15.0.2 無法辨識 STRING_AGG
我最近在 AWS 中的 SQL Server 2019 (14.0.3192.2) 上編寫了一個儲存過程,該過程毫無問題地使用了該函式
STRING_AGG
。當我將程式碼移至本地測試數據庫時,它抱怨該方法。經過研究,我開始將我的本地 sql server db 服務從 14.x 版本更新到最新的 15.0.2 並嘗試再次安裝 sproc;對失敗
‘"’’,STRING_AGG(ActionDATE, ‘’","’’),’’"’ 附近的語法不正確。
自 SQL Server 2017 以來,此功能一直是可行的……因此在 2019 的本地版本中缺失有點令人費解。
問題
除了安裝 SQL Server 2019 Developer Edition 來解決這個問題,我還有什麼辦法?
意圖
請注意,失敗行
STRING_AGG
是嘗試創建一個 JSON 日期子數組,例如
[ '01/24/2020', '01/28/2020' ]
:程式碼
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
JSON 結果
[ { "id_Operation": 13, "id_Location": 8675309, "Dates": [ "12/03/2018", "08/27/2018", "10/22/2018" ] } ]
根據我的評論:您是否嘗試過使用該
STRING_AGG()
函式和一個非常簡單的測試案例來確認這是該函式的問題,而不是您在主查詢中的語法問題?似乎您的語法格式不正確,而不是
STRING_AGG()
您的實例版本上沒有該功能。