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

如何在MSSQL中按SOURCEID分组合并SOURCE_CATEGORY表的NAME字段?

MSSQL按SOURCEID分组合并NAME字段实现方案

适用SQL Server 2017及以上版本(推荐)

使用STRING_AGG函数直接按分组拼接NAME字段,语法简洁高效:

SELECT 
    SOURCEID,
    STRING_AGG(NAME, ',') AS NAME_LIST
FROM SOURCE_CATEGORY
GROUP BY SOURCEID

适用SQL Server 2016及以下版本

通过FOR XML PATH方式实现字符串拼接:

SELECT 
    sc.SOURCEID,
    STUFF((
        SELECT ',' + NAME 
        FROM SOURCE_CATEGORY 
        WHERE SOURCEID = sc.SOURCEID 
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS NAME_LIST
FROM SOURCE_CATEGORY sc
GROUP BY sc.SOURCEID

迁移到MongoDB的后续处理

查询得到的NAME_LIST是逗号分隔的字符串,迁移时可通过以下方式转成数组:

  • 若使用MongoDB Compass导入:在导入映射阶段,将NAME_LIST字段设置为拆分字符串,分隔符选逗号,自动转为数组。
  • 若用自定义脚本(如Python):读取SQL结果后,对每个记录的NAME_LIST执行拆分操作:
# 示例代码片段
for record in sql_query_results:
    record['NAME'] = record.pop('NAME_LIST').split(',')
# 随后将处理后的记录插入MongoDB集合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:04:54