读书人

求一sql句,三行一行,该如何解决

发布时间: 2012-01-30 21:15:58 作者: rapoo

求一sql句,三行一行

07001 语文
07001 数学
07001 英语
查果

07001 文;;英


[解决办法]
create function dbo.uf_gets(@学号 varchar(10))
returns varchar(100)
as
begin
declare @s varchar(100)
set @s= ' '
select @s=@s+ '; '+选修课 from 表 where 学号=@学号
set @s=stuff(@s,1,1, ' ')
return @s
end
go
select 学号,dbo.uf_gets(学号) as '选修课 ' from 表
[解决办法]
用函数是可以的,你要考虑效率,用case 语句吧,
你要看例子,在我的qq群32097372 里面有专门的文章,其实你的问题是竖表变横表,
我发现论坛里面有很多这样的帖子,有兴趣加我的qq群
[解决办法]
你用我的表:
借用你的函:
CREATE FUNCTION dbo.uf_gets(@name varchar(100)) RETURNS varchar(100)
AS BEGIN DECLARE @s varchar(100)
SET @s = ' '
SELECT @s = @s + '; ' + name1
FROM ytest
WHERE name2 = @name
SET @s = stuff(@s, 1, 1, ' ') RETURN @s
END


name1 char (10),
name2 char(10),
[value] char(10)

容:
name1 name2 value
1 2 2
2 2 1
3 2
4 5 2

:
select name2, dbo.uf_gets(2) from ytest group by name2

你再下呢?
[解决办法]
就是表中所有的程名行合,如果一具值就只合那一所的程名了

你把函看成是sum()函就行了,功能是一的

读书人网 >SQL Server

热点推荐