首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL Server的分组字符串聚合/ LISTAGG

SQL Server的分组字符串聚合/ LISTAGG
EN

Stack Overflow用户
提问于 2010-07-30 13:44:18
回答 1查看 47.5K关注 0票数 18

我肯定有人问过这个问题,但我找不到合适的搜索词。

给定一个类似如下的模式:

代码语言:javascript
复制
| CarMakeID | CarMake
------------------------
|         1 | SuperCars
|         2 | MehCars

| CarMakeID | CarModelID | CarModel
-----------------------------------------
|         1 |          1 | Zoom
|         2 |          1 | Wow
|         3 |          1 | Awesome
|         4 |          2 | Mediocrity
|         5 |          2 | YoureSettling

我想生成一个这样的数据集:

代码语言:javascript
复制
| CarMakeID | CarMake   | CarModels
---------------------------------------------
|         1 | SuperCars | Zoom, Wow, Awesome
|         2 | MehCars   | Mediocrity, YoureSettling

在以下样式查询中,如何替换SQL Server中字符串的'AGG‘?

代码语言:javascript
复制
SELECT *, 
 (SELECT AGG(CarModel) 
  FROM CarModels model
  WHERE model.CarMakeID = make.CarMakeID
  GROUP BY make.CarMakeID) as CarMakes
FROM CarMakes make
EN

回答 1

Stack Overflow用户

发布于 2017-05-09 06:01:21

如果是SQL Server 2017或SQL Server VNext,Azure SQL数据库,您可以使用String_agg,如下所示:

代码语言:javascript
复制
SELECT  make.CarMakeId, make.CarMake, 
        CarModels = string_agg(model.CarModel, ', ') 
FROM CarModels model
    INNER JOIN CarMakes make 
    ON model.CarMakeId = make.CarMakeId
GROUP BY make.CarMakeId, make.CarMake

输出:

代码语言:javascript
复制
+-----------+-----------+---------------------------+
| CarMakeId |  CarMake  |         CarModels         |
+-----------+-----------+---------------------------+
|         1 | SuperCars | Zoom, Wow, Awesome        |
|         2 | MehCars   | Mediocrity, YoureSettling |
+-----------+-----------+---------------------------+
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3368942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档