将列的所有行转换为逗号分隔值

时间:2013-06-12 15:22:46

标签: sql-server-2005

我在Sql server 2005中有一个具有此结构的表。

TABLE TPilot
(
    Num_Office char(3) NULL,
    AppID char(3) NULL
)

并且表中有大约998条记录,其中“Num_Office”值从2到999开始。 我希望将所有办公室值放在一行中,并使用逗号分隔值,如2,3,4,5..999

以下是我现在使用的查询 -

select stuff((select ','+ Num_Office from TPilot for xml path('')),1,1,'')

这里的问题是 - 它不会返回所有行值。它只返回65行。

2  ,3  ,4  ,5  ,6  ,7  ,8  ,9  ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,46 ,47 ,48 ,49 ,50 ,51 ,52 ,53 ,54 ,55 ,56 ,57 ,58 ,59 ,60 ,61 ,62 ,63 ,64 ,65 ,

请在这里建议我缺少的东西。

1 个答案:

答案 0 :(得分:0)

这应该解决您的问题。

create table #Num_Office (Num_Office char(3),APPID CHAR(3))

insert into #Num_Office (Num_Office,APPID) values ('1',1)
insert into #Num_Office (Num_Office,APPID) values ('2',1)
insert into #Num_Office (Num_Office,APPID) values ('3',1)
-- ADD YOUR ROWS AS PER NEED ...

declare @tmp varchar(250)
SET @tmp = ''
select @tmp = @tmp + Num_Office + ', ' from #Num_Office

select SUBSTRING(@tmp, 0, LEN(@tmp))

DROP TABLE #Num_Office
相关问题