【问题标题】:String_agg in sql server 2016sql server 2016 中的 String_agg
【发布时间】:2019-06-30 09:06:25
【问题描述】:

这是我在 sql server 2016 中的代码

insert into @entdef_queries(entitydefid,squery)
            select A.entitydefid
                ,
                (
                    select String_agg(cols,ioperator)
                    from
                    (
                        Select case when lower(b.metricdatatype) like 'string%' or lower(b.metricdatatype) like '%char%' or lower(b.metricdatatype) ='bit' or lower(b.metricdatatype) like 'date%' then
                                ' lower("'+ b.metricname +'") ' + b.metriccondition +' '''+ b.value1 +''' ' 
                            when lower(b.metricdatatype) not like 'string%' and lower(b.metricdatatype) like '%char%' and lower(b.metricdatatype) !='bit' and lower(b.metricdatatype) not like 'date%' then 
                                case when lower(b.metriccondition)='between' then  ' "'+ b.metricname +'"' + b.metriccondition +' '+ b.value1 +' and ' + b.value2 + ' '
                                    else ' "'+ b.metricname +'"' + b.metriccondition +'  '+ b.value1 + ' ' end  
                            end cols
                        , ( select distinct operators from @entdef_data C where A.entitydefid=C.entitydefid) ioperator
                        from 
                        @entdef_data B
                        where A.entitydefid=b.entitydefid
                    )inp
                )
            from
            @entdef_data A
            group by A.entitydefid;   

当我尝试执行以下代码时..它抛出错误String_agg 不是内置函数。

【问题讨论】:

  • string_agg() 从 2017 年开始可用,而不是 2016 年。升级 SQL Server 或使用for xml 方法。

标签: sql sql-server sql-server-2016 string-aggregation


【解决方案1】:

正如 Gordon Linoff 所说,此功能在 SQL Server 2016 中不可用。

将使用for xml 方法。


从 SQL Server 2005 开始,可以使用略为 faster 的替代方案:SQLCLR GROUP_CONCAT。 用法与本机 STRING_AGG 非常相似。但是因为它是一个自定义的 CLR 聚合,它引入了自己的风险:要启用 CLR、可能的内存泄漏等。

文档: https://orlando-colamatteo.github.io/ms-sql-server-group-concat-sqlclr/

【讨论】:

    猜你喜欢
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2018-08-27
    • 2017-05-08
    • 2023-01-24
    相关资源
    最近更新 更多