废话少说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
....不知道怎么处理,望各位帮小弟一下。在线等,解决马上结帖。

解决方案 »

  1.   

    这个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 学号
      

  2.   

    每个专业开设N个课程,一个课程可能存在于几个甚至几十个专业。还有部分课程可能A专业是第一学期,B专业是第二学期。小生愚钝,望赐教。
      

  3.   

    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 #) xset @sql = @sql + ' from # group by number order by number'
    exec (@sql)drop table #