回 帖 发 新 帖 刷新版面

主题:求助一个SQL程序!!!(本人已经有一个答案!!)

有一个表如下所示:
1.类型如下:
列名    数据类型    长度    允许空
Id      Int         4       否
Text    Char        20      是
Rank    Int         4       是

2.表中的数据如下:
Id    Text    Rank
1     Hello    1
1     Mr.      2
1     Jack     3
2     My       1
2     Name     2
2     Is       3
2     Broween  4

3.利用SQL查询语言得到的结果如下:
Id    Text
1     Hello Mr. Jack
2     My Name Is Broween


//本人已有一种方法!!用游标来做的,但觉得太麻烦!!
//请各位高手开导一下啊,谢谢!!!
//create table stu(id int(2),text char(8),Rank int(2))  
//创建数据表存放原始数据
//create table stu1(id int(2),text varchar(50))
//创建数据表存放查询结果

//利用游标来处理,将结果存放到stu1中,然后显示
declare cu cursor 
for select id,text from stu order by id,class
declare @temp_id int,@cu_id int,
        @cu_text varchar(6),@temp_text varchar(35);
delete from stu1
open cu
Fetch next from cu into @cu_id,@cu_text
set @temp_id=@cu_id
set @temp_text=''
while @@FETCH_STATUS = 0
begin
   if @cu_id=@temp_id
   begin
     set @temp_text=@temp_text+' '+@cu_text   //text内容拼接
     print @temp_text
   end
   else
   begin
     insert stu1 values(@temp_id,@temp_text)
     set @temp_text=''
     set @temp_text=@temp_text+' '+@cu_text
     set @temp_id=@cu_id
   end  
   Fetch next form cu into @cu_id,@cu_text
end
insert stu1 values(@temp_id,@temp_text)
close cu
deallocate cu
select * from stu1 order by id

回复列表 (共1个回复)

沙发

declare @a varchar(100),@b varchar(100)
set @a=''
set @b=''
select @a=@a+rtrim(d.text)+' '
from (select text from ddd where ddd.id=1) as d

select @b=@b+rtrim(dd.text)+' '
from (select text from ddd where ddd.id=2) as dd 

select id,[text]=case id when 1 then @a else @b end
from ddd
group by id

我来回复

您尚未登录,请登录后再回复。点此登录或注册