declare @sql varchar(8000)
set @sql = 'select 姓名,年级,班级'select name into #t
from syscolumns
where id = object_id('表')
and name like '%(2)%' --找第二学期update #t
set @sql = @sql + ','+rtrim(name)set @sql = @sql + ' from 表'drop table #texec(@sql)不过,还是不好。表设计不合理。
set @sql = 'select 姓名,年级,班级'select name into #t
from syscolumns
where id = object_id('表')
and name like '%(2)%' --找第二学期update #t
set @sql = @sql + ','+rtrim(name)set @sql = @sql + ' from 表'drop table #texec(@sql)不过,还是不好。表设计不合理。
declare @sql nvarchar(4000)
declare @i int
set @i=1--第一学期set @sql='select 姓名,年级,班级,'select @sql=@sql+name+',' from syscolumns where id=object_id('main') and name like '%('+rtrim(@i)+')'set @sql=left(@sql,len(@sql)-1)+' from main'exec(@sql)我觉得还是改表结构好.这样设计表不大合理
英语(1) 英语(2) 英语(3) 英语(4) 高数(1) 高数(2) 历史(3) ....
90 80 82 60 52 76
课程后数字为学期数,由于学生采用选修,所以每个学生所学课程可能不一样,
要求能通过姓名或年级或班级或学期查询?
(1)能否对字段采取变量 select *1) from main 查出第一学期成绩?
(2)由于所选字段是随机的,空值不选,怎样将字段名与数据对应起来?
如果说要按照学期查询,肯定是不能够用select *1) from main 来查询了,至少我是没有听说过。不过,你可以再使用一个表,用来存储main中所有的字段以,这样你就可以首先通过那个字段表检索得到某个学期所有的字段(甚至几个学期的),然后就可以从main中查询数据了。
其实,我并不觉得main这样的结构合理,而且我对“系中总课程数是固定的”这句话不是很理解,当然也许你有更多的实际的理由。
skyearth(sky) :改表结构,别无他法!