Sql-Server

SQL Server LocalDB V15.0.2 無法辨識 STRING_AGG

  • January 28, 2021

我最近在 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()您的實例版本上沒有該功能。

引用自:https://dba.stackexchange.com/questions/284186