分组字符串聚合: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中文网其他相关文章!