在sqlserver 2016中使用string_agg时出现错误。

10 浏览
0 Comments

在sqlserver 2016中使用string_agg时出现错误。

我有一个SQL存储过程,我试图在其中使用string_agg函数。当我尝试创建存储过程时,出现以下错误:

Msg 195,级别15,状态10,过程MamographyDaily,行18 [批处理开始行7] 'STRING_AGG'不是一个被识别的内置函数名。

我正在运行SQL Server 2016,并使用SQL 2017管理工具。

0
0 Comments

在使用SQL Server 2016时,使用string_agg函数会出现错误。这是因为string_agg函数仅在SQL Server 2017及更高版本中支持。

解决方法是使用FOR XML PATH()来实现相同的功能。以下是一个示例:

假设有以下样本数据:

Field A | Field B
    1       |  A
    1       |  B
    2       |  A

需要的输出是:

1 | AB
2 | A

可以使用以下查询来实现:

select distinct t1.FieldA,
  STUFF((SELECT distinct '' + t2.FieldB
         from yourtable t2
         where t1.FieldA = t2.FieldA
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,0,'') data
from yourtable t1;

如果您使用的是早期版本,或者想知道是否有等效的函数可用,请使用FOR XML PATH()来实现相同的功能。以下是一个示例:

0