日期:2014-05-18  浏览次数:20446 次

如何在利用存储过程返回一批记录之前先返回其所有列名....
建的表

create table tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int)
insert into tb values('张三' , '语文' , 74)
insert into tb values('张三' , '数学' , 83)
insert into tb values('张三' , '物理' , 93)
insert into tb values('李四' , '语文' , 74)
insert into tb values('李四' , '数学' , 84)
insert into tb values('李四' , '物理' , 94)
go

--SQL SERVER 2000 动态SQL,指课程不止语文、数学、物理这三门课程。(以下同)
declare @sql varchar(8000)
declare @name varchar(20)
set @name='张三'
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 分数 else 0 end) [' + 课程 + ']'
from (select distinct 课程 from tb) as a
set @sql = @sql + ' from tb where 姓名='''+@name+''' group by 姓名 '
exec(@sql)

以上如果建立存储过程返回的是张三的记录,如何在返回此批记录前
先返回列名 语文、数学、物理



------解决方案--------------------
只要列名不要记录?
------解决方案--------------------
你这是什么意思?

select distinct 课程 from tb
------解决方案--------------------
declare @f varchar(8000)
set @f=''
select @f=@f+'、'+课程
from tb group by 课程

set @f=stuff(@f,1,1,'')
------解决方案--------------------
declare @f varchar(8000) 
set @f='' 
select @f=@f+'、'+课程 
from tb
where 姓名='张三'
group by 课程 

set @f=stuff(@f,1,1,'')

------解决方案--------------------
晕,楼上误会我的意思了呀,
我的意思是当我实施了下面的语句可以达到那种效果哦 
------------------
达不到

没怀孕之前就知道是男是女了?