主题:求助一个SQL程序!!!
xtarwgd
[专家分:0] 发布于 2006-12-14 11:40:00
有一个表如下所示:
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
回复列表 (共5个回复)
沙发
wslxg [专家分:60] 发布于 2006-12-14 19:40:00
1.
select id,text from 表名 where id=1 group by id having(count(*)=3)
2.
select id,text from 表名 where id=2 group by id having(count(*)=4)
板凳
免费高手 [专家分:0] 发布于 2006-12-15 15:57:00
楼上一看就知道是错误的!group by 居然查了2个字段,后面却只写了1个
3 楼
xtarwgd [专家分:0] 发布于 2006-12-15 19:18:00
4 楼
xtarwgd [专家分:0] 发布于 2006-12-15 19:24:00
//本人已有一种方法!!用游标来做的,但觉得太麻烦!!
//请各位高手开导一下啊,谢谢!!!
//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 char(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
5 楼
linjipeng0 [专家分:220] 发布于 2007-09-19 10:48:00
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
我来回复