给你一个思路:
(1)、使用视图把数据表转换成你在DataGridView中显示的格式。
(2)、把(1)中的视图作为数据源绑定给DataGridView。

解决方案 »

  1.   


    declare @temp nvarchar(4000)
    set @temp=''
    Select @temp=@temp+','+quotename(课程名)+'=max(case when 课程名='+quotename(课程名,'''')+' then 成绩 else 0 end)'
    from tb group by 课程名
    exec('select 专业,班级,学号'+@temp+' from tb group by 专业,班级,学号')
      

  2.   

    看你上面的那个表,设计的大大的有问题,完全可以设计成两个表:一个学生信息表   ,一个成绩表,用学号去关联你上面那个设计不仅出现了大量的冗余数据,还让你自己走入死胡同了........你上面那个是用SQL能写出来的.........到SQL区找写SQL牛X的人吧
      

  3.   

      这个数据库是sql2000的,数据库里的成绩表,我是按另一个页面的格式插入的,所以就变成上面那样的格式了,因为老师把这个系统的界面都给了我们,我们就按他的去插入了,现在最搞不明白的是,这个系统有个界面专门负责打印成绩的,上面有个combobox1负责让你选择专业,combobox2负责让你选择班级,下边就一个datagridview,再一个打印button,datagridview要按上边的格式输出,因为专业不同,课程是不同的,所以每次combobox1专业的变化,datagridview的列都会发生变化,例如选择了专业信管,datagridview的列就要有他的所有课程:专业 班级 学号 c++  编译原理  操作系统  ,如果专业是临床麻醉学,就要这样:专业 班级 学号  解剖学  生理学 人体形态学,不知道这样表达大家明不明白,难道每个专业都要建个表吗?有50多个专业。所以不知道如何处理,我的想法是先selcet出来,根据这样的格式处理,但又不如何实现这样的格式,如果把专业里的全部课程读到datagridview的每个列,又不知道如何把学生的成绩放到适合的列,才学了一个学期数据库和ado。net,就要我们搞个学生系统,实现n多功能,又无人帮很是郁闷,各位大哥只要有什么想法提指点下啊,我去尝试啊,不胜感激啊
      

  4.   

    首先从数据库设计来说,你这个表不符合数据库三范式规范,而后来想对数据进行统计变得异常复杂。如果非将就你现在的数据表,不能用DATAGRID数据绑定,只可以:1、让数据库直接返回操作结果; (以课程名做查询条件)
    2、查询到数据表的结果后, 让C#组织成那样的表结构,再到数据显示控件;