sql server 中合并某个字段值的实例
有表如下:

如何获得如下结果:

解法
使用xml转换
代码如下:
CREATE TABLE body
(
ID int,
BODY nvarchar(20)
)
go
INSERT INTO body VALUES(1,'aaaa')
INSERT INTO body VALUES(2,'bbbb')
INSERT INTO body VALUES(1,'cccccc')
INSERT INTO body VALUES(3,'ddddd')
go
SELECT * FROM body
SELECT distinct a.ID,stuff((SELECT ','+BODY FROM body WHERE ID=a.ID FOR xml path('')),1,1,'') ASBODY
FROM
body a
--具体思路是这样的:
SELECT ','+BODY FROM body WHERE ID=a.ID FOR xml path('')
--这条语句的作用是按照a中的ID查找body表中ID=a.ID的所有记录,并把它转换成一个xml(关于将查询集转换成xml的文章,你可以去看看)
stuff((SELECT ','+BODY FROM body WHERE ID=a.ID FOR xml path('')),1,1,'')
--这条语句的作用是把生成的xml前面的一个逗号去掉并转化成标量值
--最后用一个distinct去掉重复的记录
相关文章
SQL Server 2022 Enterprise安装部署的实现步骤
SQL Server 2022是一款功能强大的关系型数据库管理系统,它提供了稳定可靠的数据存储和管理功能,本文主要介绍了SQL Server 2022 Enterprise部署的实现步骤,具有一定的参考价值,感兴趣的可以了解一下2024-04-04
SQL Server 复制需要有实际的服务器名称才能连接到服务器
今天在做sql Server 2005的实验的时候碰到的问题,问题描述很清楚,怀疑是我以前给计算机修改了名称而导致的.可以用select @@servername和select serverproperty ('servername')对照一下,两个的结果是否一样2012-06-06


最新评论