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

如何将两列数据合并为一列?SQL实现多列合并与分组聚合

问题说明

需要将farmtable表中的Botanical Name列数据合并到Item列中,同时保留Location列的分组聚合拼接功能。现有代码已实现Location的分组拼接,但不清楚如何实现多列合并。

原始数据表(farmtable)

IdItemBotanical NameLocation
1AppleMalus sppBlock C
2CoffeeCoffeaBlock A
3CoffeeCoffeaBlock B
4AppleMalus sppBlock B

现有代码

SELECT
 Item,
 Botanical,
 STUFF(
     (SELECT DISTINCT ', ' + Location
      FROM farmtable
      WHERE Item = a.Item
      FOR XML PATH (''))
      , 1, 1, '')  AS URLList
FROM farmtable AS a
GROUP BY Item, Botanical

期望结果

IdItemLocation
1Apple, Malus sppBlock C, Block B
2Coffee, CoffeaBlock A, Block B

修改后的实现代码

SELECT
 -- 合并Item与Botanical Name列
 CONCAT(Item, ', ', [Botanical Name]) AS Item,
 -- 聚合拼接Location字段
 STUFF(
     (SELECT DISTINCT ', ' + Location
      FROM farmtable
      WHERE Item = a.Item AND [Botanical Name] = a.[Botanical Name]
      FOR XML PATH ('')),
     1, 2, '') AS Location
FROM farmtable AS a
GROUP BY Item, [Botanical Name]

关键修改点

  • 用CONCAT(Item, ', ', [Botanical Name])直接拼接两列,生成新的Item列
  • 子查询的WHERE条件补充[Botanical Name] = a.[Botanical Name],确保关联逻辑严谨(避免同一Item对应不同Botanical Name时出现错误聚合)
  • 调整STUFF第三个参数为2,因为拼接后的Location前缀是, (两个字符),需要去掉开头的多余符号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 18:42:56