注册 登录
编程论坛 SQL Server论坛

求一条SQL语句

wzg0319 发布于 2008-09-09 19:30, 1454 次点击
表A:
id      classname
1        语文
2        数学
3        英语
表B:
id   nameid    namestudent
1    001        张三
3    002        李四
1    002        李四
2    001        张三
结果:
id   nameid  namesstudent
1,2    001     张三
3,1    002     李四  

请问这条SQL语句怎么写
9 回复
#2
nbxkele2008-09-10 14:41
create function f(@nameid int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+cast(id as varchar) from B where nameid=@nameid
set @str=right(@str,(len(@str)-1))
return(@str)
End
go

--调用自定义函数得到结果
select distinct dbo.f(nameid)as 'id',nameid,namesstudent from B
#3
nbxkele2008-09-10 14:53
函数是从论坛中“分享SQLSERVER 知识”中引用
#4
myemail19832008-09-10 19:12
这还没学,看不太懂
#5
夜の枫2008-09-16 13:52
回复 2# nbxkele 的帖子
厉害!因为我也想了很久!!~
#6
上官逸淳2008-09-16 14:53
看起来是不会错的,只不过还是有点看不懂。
#7
上官逸淳2008-09-16 15:11
看明白了,确实是高手啊!
#8
徐强2008-09-22 14:38
修改个地方就完美了:
if len(@str)>0
set @str=left(……)
#9
雪雨星风2008-09-23 10:06
不错
#10
sunkaidong2008-09-23 10:27
很漂亮的代码。。
1