在线等:问一个gridview的问题
废话少说
DB中有一表为course,含三个字段:学号,课程名,分数
示例:
20032 CS 80
20032 IS 85
20032 C 70
20032 VB 70
20033 CS 80
20033 IS 75
.
.
.
想在前台以如下方式显示:
学号 CS分数 IS C VB
20032 80 85 70 70
....
不知道怎么处理,望各位帮小弟一下。在线等,解决马上结帖。
------解决方案--------------------数据库设计好像不太合理
取出数据以后再转化好了
------解决方案--------------------这个GridView可能无能为力
可以利用Sql语句进行列变行,尝试一下Sql语句
SELECT 学号
,sum(case 课程类型 when 'cs ' then 分数 else 0 end) as cs分数
,sum(case 课程类型 when 'is ' then 分数 else 0 end) as is分数
,sum(case 课程类型 when 'c ' then 分数 else 0 end) as cs分数
,sum(case 课程类型 when 'vb ' then 分数 else 0 end) as vb分数
FROM course
group by 学号
------解决方案--------------------create table #
(
number nvarchar(20),
course nvarchar(20),
score int
)
insert into #
select '20032 ', 'CS ', 80 union all
select '20032 ', 'IS ', 85 union all
select '20032 ', 'C ', 70 union all
select '20032 ', 'VB ', 70 union all
select '20033 ', 'CS ', 80 union all
select '20033 ', 'IS ', 75
declare @sql varchar(8000)
set @sql = 'select number '
select @sql = @sql + ', sum(case course when ' ' ' + course + ' ' ' then score else 0 end) as ' ' ' + course + ' ' ' '
from (select distinct course from #) x
set @sql = @sql + ' from # group by number order by number '
exec (@sql)
drop table #