You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure SQL Server中Kusto的make_list_if()/make_set_if()等效实现

在Azure SQL中实现按CorrelationId聚合错误记录的方案

方法1:使用STRING_AGG(适合合并文本内容)

如果仅需将非空的Error字段按CorrelationId拼接成字符串,STRING_AGG是最直接的方案,支持过滤非空值:

SELECT 
    CorrelationId,
    STRING_AGG(Error, '; ') AS Errors
FROM logs_CL
WHERE Error IS NOT NULL AND Error <> ''
GROUP BY CorrelationId;

可根据需求自定义分隔符,比如用换行符CHAR(13)+CHAR(10)替代; 。

方法2:拼接为JSON数组(保留结构化列表)

如果需要模拟Kusto中列表的结构化形式,可将每条Error包装为JSON元素,再拼接成标准JSON数组:

SELECT 
    CorrelationId,
    CONCAT('[', STRING_AGG(CONCAT('"', REPLACE(Error, '"', '""'), '"'), ','), ']') AS Errors
FROM logs_CL
WHERE Error IS NOT NULL AND Error <> ''
GROUP BY CorrelationId;

输出的Errors字段为JSON数组格式,方便后续解析处理。

方法3:使用XML PATH(兼容旧版SQL Server)

若使用的是SQL Server 2017之前的版本(不支持STRING_AGG),可通过XML PATH实现聚合:

SELECT 
    CorrelationId,
    STUFF(
        (SELECT '; ' + Error 
         FROM logs_CL l2
         WHERE l2.CorrelationId = l1.CorrelationId
           AND Error IS NOT NULL AND Error <> ''
         FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),
        1, 2, ''
    ) AS Errors
FROM logs_CL l1
GROUP BY CorrelationId;

该方法通过XML拼接后去除开头的分隔符,达到类似STRING_AGG的效果。


内容的提问来源于stack exchange,提问作者WestCoastProjects

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 03:10:58