create table tb ([id] int,[name] varchar(2))
insert into tb
select 1,'aa' union all
select 2,'bb' union all
select 1,'cc' union all
select 3,'dd' union all
select 2,'ee'
select * from tb
--查询
select
id,
name=stuff((select ','+name from tb where id=t.id for xml path('')),1,1,'')
from
tb t
group by
id
方法二:
CREATE FUNCTION GET_STRING(@ID INT)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @NAME VARCHAR(500)
SELECT @NAME=ISNULL(@NAME+',','')+NAME FROM TB WHERE ID=@ID
RETURN @NAME
END
SELECT ID ,DBO.GET_STRING(ID)NAME FROM TB GROUP BY ID
-----------------------------------------------------------------------
在oracle中,是有相对应的函数,sys_connect_by_path函数。
先在这里把oracle的函数实现也写下吧
select id
,itrim(max(sys_connect_by_path(name,','))) as name
from
(select id
,name
,lead(rnFirst) over(partition by no order by rnFirst)rnNext
from
(select a.id
,a.name
,row_number() over(order by a.id,a.name desc) rnFirst
from @t a) tmpTable1
) tmpTable2
start with rnNext is null
connect by rnNext = PRior rnFirst
group by id
以上是实现oracle中的行转列方式。
********************************************下面我们来看一下sqlserver的,因为sqlserver没提供类似的函数,不知道sqlserver2012提供没
不过sqlserver支持起来也很简单,使用cross apply和for xml path组合来用,这两个单独都知道是怎么回事,怎么使用,但是真不知道还有它俩组合来完成这个功能的,感到很是不可思议,这里要感谢下网络上的人,原来自己写东西都是把所学到的知识记录到本机,从不放到网上,也可能是最近吧,好多工作不会,都是通过网络帮助,就把我所知道的东西也都放到网上来,大家一起学习。
sqlserver:
select id, SUBSTRING(names, 1, len(names)-1) from @t AS A cross APPLY
(SELECT NAME + ',' FROM @t AS B WHERE A.id = B.id FOR XML PATH('')) D (names)
GROUP BY id, names
详细解决方案
sql server 使用for xml path 将1列多行转换为字符串连接起来
热度:88 发布时间:2024-01-22 03:18:53.0
相关解决方案
- myeclipse联接sql server 2008看不到用户表
- 在哪找的SQL Server 2005数据库驱动文件?为什么sql server2005安装盘上面没有找到
- ASP上Set GetSession("conn")=server.CreateObject("adodb.connection")
- SOS-(奇怪现象)服务器暂不可用500 internal server error,该怎么解决
- sql server 设置非空默认值之后,hibernate添加出现异常
- 可以安装在win7系统的sql server
- exchange server 2000提供全部用户邮件到达的java api吗
- Invalid path,是咋回事?
- 运作java的时候 出现Error : Invalid path, "C:\Program Files (x86)\Java\jdk1.6.0_21\bin
- IM聊天系统的有关问题,用Tigase Server 如何实现挤线功能
- com.microsoft.sqlserver.jdbc.SQLServerException: 用户 'sa' 登录失败。该用户与可托 SQL Server
- Build path specifies execution environment J2SE-1.4 异常
- 如何用JDBC将一个文件夹里的东西存储进sql server
- 关于SQL SERVER 2005里面的image类型解决方案
- IIS 筹建 TFS,访问<server>/tfs/web时说无权访问此页面,何解?
- IIS 搭建 TFS,访问<server>/tfs/web时说无权访问此页面,何解?该怎么处理
- Server Error in '/' Application.解决方法
- sql server 2005 约束有关问题
- Microsoft Team Foundation Server 2010 怎么备份数据
- C# + SQL server +oracle QQ交流群142703980解决方法
- 装配vs2008时组件microsoft sql server compact 3.5 for devices无法安装!求解
- 安装vs2008时组件microsoft sql server compact 3.5 for devices无法安装!求解!解决办法
- C# 经过.ini或.txt文件连接sql server
- DELPHI +SQL SERVER 2005 掉线 急该如何处理
- 小弟我为什么在使用Page.Server.Transfer()进行页面跳转时报错,转不了
- Server Error in '/' Application.该怎么处理
- windows server 2008 + IIS 7.5 上 网站自定义权限过滤有关问题
- visual studio2010连接自带的sql server 2008express版本的数据库有关问题
- 急关于Windows Server 2008 的 iis 7 下的aspx页面“HTTP 异常 404.3 - Not Found”异常
- 外网,访问数据库揭示 用户'(null)' 登录失败。原因: 未与信任 SQL Server 连接相关联