[SQL Server]SQL Server中如何将某些列的值按列分组并接连成单个字符串?

SQL Server 作者: Rector 994 次阅读 · 读完约需 2 分钟 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

在SQL Server中如何将某些列的值按列分组并接连成单个字符串?
比如有如下的示例数据:

id Name Value
1 A 4
1 B 8
2 C 9

需要使用SQL语句将以上表格中的数据按照id分组,并将相同分组的NameValue列对应的值连接起来,结果为如下所示:

id Column
1 A:4, B:8
2 C:9

要完成以上的需要,我们应该如何使用SQL来实现呢?

方案一

使用SQLFOR XML ... PATH语句,如:

注:此语句需要使用 SQL Server 2005或者以上版本

方案二

当数据中包含特殊字符(比如:&,<,>)时,我们需要进行字符的转码,如:

方案三

或者我们还可以使用CTE来实现,如:

方案四

SQL Server 2017 或者 SQL Server Vnext 或者 SQL Azure中,我们可以使用string_agg(...)内置函数来轻松实现,如:

方案五

甚至我们可以使用while循环来实现,如:

阅读了该文章的人还浏览了...

本文永久链接码友网 » [SQL Server]SQL Server中如何将某些列的值按列分组并接连成单个字符串?

发布于: 2018-03-05 09:14:13
分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册