SQL Server 2000的SQL Server字符串concat问题

时间:2012-03-12 07:05:03

标签: sql-server tsql

当我使用group by时,我试图用逗号连接值。所以我使用STUFF()函数和for xml path('')子句。这是我的剧本

IF EXISTS 
( 
 SELECT * 
 FROM tempdb.dbo.sysobjects 
 WHERE ID = OBJECT_ID(N'tempdb..#tmp1') 
) 
BEGIN 
 DROP TABLE #tmp1 
END 

create table #tmp1
(ID  varchar(2),CName varchar(20) )

insert into #tmp1(ID,CName) values ('A','BBA Reman')
insert into #tmp1(ID,CName) values ('B','BBA Reman')
insert into #tmp1(ID,CName) values ('C','CT Tech')
insert into #tmp1(ID,CName) values ('D','CT Tech')

select
t1.CName,
stuff((
    select ',' + t.ID
    from #tmp1 t
    where t.CName = t1.CName
    order by t.ID
    for xml path('')
),1,1,'') as ConCatStr
from #tmp1 t1
group by t1.CName

上述脚本在SQL Server 2005中成功运行,但未在SQL Server 2000中运行。因此,请告诉我如何重构我的脚本,因此它也应该在SQL Server 2000中运行。

1 个答案:

答案 0 :(得分:1)

有很多方法可以在不使用xml的情况下创建逗号分隔列表,请看下面的内容:

http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/