当我使用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中运行。
答案 0 :(得分:1)
有很多方法可以在不使用xml的情况下创建逗号分隔列表,请看下面的内容:
http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/