首页 > 数据库 > mysql教程 > 如何使用SQL Server的STRING_AGG函数进行分组字符串聚合?

如何使用SQL Server的STRING_AGG函数进行分组字符串聚合?

Linda Hamilton
发布: 2024-12-23 20:38:15
原创
836 人浏览过

How Can SQL Server's STRING_AGG Function Be Used for Grouped String Aggregation?

分组字符串聚合:SQL Server 中的 LISTAGG 函数

SQL Server 中的字符串聚合提供了一种将多个字符串值组合成单个串联值的方法细绳。处理分组数据时,此功能在生成以逗号分隔的不同值列表等场景中至关重要。

考虑以下架构,我们希望在其中聚合每个汽车品牌中的汽车模型:

| CarMakeID | CarMake
------------------------
| 1 | SuperCars
| 2 | MehCars

| CarMakeID | CarModelID | CarModel
-----------------------------------------
| 1 | 1 | Zoom
| 2 | 1 | Wow
| 3 | 1 | Awesome
| 4 | 2 | Mediocrity
| 5 | 2 | YoureSettling
登录后复制

我们想要的输出是:

| CarMakeID | CarMake | CarModels
---------------------------------------------
| 1 | SuperCars | Zoom, Wow, Awesome
| 2 | MehCars | Mediocrity, YoureSettling
登录后复制

为了实现这种聚合,SQL Server 提供了几个选项。但是,建议的字符串连接方法是使用 STRING_AGG 函数。

以下修改后的查询使用 STRING_AGG 函数代替初始查询中的 AGG:

SELECT *, 
(SELECT STRING_AGG(CarModel, ', ') AS CarModels
  FROM CarModels model
  WHERE model.CarMakeID = make.CarMakeID
  GROUP BY make.CarMakeID)
FROM CarMakes make
登录后复制

STRING_AGG 函数是一个内置聚合函数,它采用列值并将所有不同的值连接到一个字符串中。可选的 SEPARATOR 参数允许我们指定值之间的分隔符,在本例中,我们选择了逗号。

此查询将生成所需的输出,其中 CarModels 列包含以逗号分隔的汽车列表每个品牌的型号。

以上是如何使用SQL Server的STRING_AGG函数进行分组字符串聚合?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板