0

我在 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 ,

请建议我在这里缺少什么。

4

1 回答 1

0

THIS SHOULD SOLVE YOUR PROBLEM.

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
于 2014-02-11T12:26:24.157 回答