我使用的是 Visual Studio 2015,但我的 SQL Server 数据库项目中的 STRING_AGG THIN GROUP 出现问题。
SELECT [Continent],
STRING_AGG([Country], ', ') WITHIN GROUP (ORDER BY [Country]) AS CountryList
FROM [Country]
GROUP BY [Continent]
此代码给出错误 SQL46010: AS 附近的语法不正确。 没有
WITHIN GROUP (ORDER BY [Country])
没问题。
目标平台设置为
Microsoft Azure SQL Database V12
调试目标连接设置为本地 SQL Server vNext 数据库。
在 SQL Server Management Studio 中,这段代码执行没有任何问题。在 SSMS 中或从代码运行存储过程会给出预期的正确结果(每个大洲 1 行,每个大洲的国家/地区列表,以逗号分隔,按国家/地区排序)。
同时,我安装了 Visual Studio 2017,希望这能消除错误,但没有成功。
已安装 SQL Server Data Tools 17(内部版本 14.0.61704.140)。
最佳答案
我遇到了类似的问题,怀疑这可能是兼容性问题,因为以下内容为我进行了排序。我没有意识到每个 SQL Server 数据库都有自己的 COMPATIBILITY_LEVEL,这会影响数据库的工作方式。 https://learn.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level?view=sql-server-2017 解释如何查询和更改此数据库属性。
SELECT NAME, COMPATIBILITY_LEVEL FROM sys.databases;
显示我的数据库的 COMPATIBILITY_LEVEL 为 100(即它与 SQL Server 2008 兼容)。
运行完毕
ALTER DATABASE <DATABASE_NAME>
SET COMPATIBILITY_LEVEL = 110
(或 120 或 130),因此它现在与 SQL Server 2012+ 兼容,包含 STRING_AGG 函数的WITHIN GROUP 子句的查询开始工作。
关于sql-server - 组内 STRING_AGG 和 Visual Studio 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43611024/