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

SQL Server GROUP BY分组查询 非聚合列取单值及列拼接实现

SQL Server 按组返回单值+拼接字符串实现方案

这个需求完全可以实现,之前查询结果不符合预期的核心原因是:你将不需要聚合拼接的col3字段也放入了STRING_AGG函数中,分组查询时聚合函数会遍历组内所有行做计算,因此col3会返回同组所有值拼接的结果。
注意:返回单条col3的前提是你需要明确组内col3的取值规则,以下是两种常见场景的可直接运行的语句:

  • 若同一个featureid分组下所有行的col3值完全一致:直接用任意聚合函数包裹col3即可(因为组内值统一,取最大/最小结果都不会错),col4单独做逗号拼接
SELECT
    featureid,
    MAX(col3) AS group_col3,
    STRING_AGG(col4, ',') AS merged_col4
FROM table_server
GROUP BY featureid;
  • 若同一个featureid分组下col3值不统一,需要取指定规则的单条col3(比如取coldatetime时间最新的那条记录的col3):先用窗口函数标记组内符合取值规则的行,再做聚合
WITH temp_mark AS (
    SELECT
        featureid,
        col3,
        col4,
        ROW_NUMBER() OVER (PARTITION BY featureid ORDER BY coldatetime DESC) AS row_rank
    FROM table_server
)
SELECT
    featureid,
    MAX(CASE WHEN row_rank = 1 THEN col3 END) AS group_col3,
    STRING_AGG(col4, ',') AS merged_col4
FROM temp_mark
GROUP BY featureid;

提示:STRING_AGG函数仅支持SQL Server 2017及以上版本,如果你的环境版本更低,需要替换为FOR XML PATH的方式实现字符串拼接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:36:31