原来的查询结果:
 学年      学期    考试名称    考试科目 学生班级 学生姓名 学生学号 单科总分 
2009学年 第一学期 第一单元测试 数学   初一(1)班 揭丽萍 20090117   83 
2009学年 第一学期 第一单元测试 语文   初一(1)班 揭丽萍 20090117   57 我想把同一个学生的成绩变成一条记录
学年 学期 考试名称     学生班级      学生姓名 学生学号 数学成绩 语文成绩
2009学年 第一学期 第一单元测试 初一(1)班 揭丽萍 20090117 83 57
原来的SQL语句:
SELECT [学年], [学期], [考试名称], [考试科目],  [学生班级], [学生姓名], [学生学号], [第1题]+ [第2题]+ [第3题]+ [第4题]+ [第5题]+ [第6题]+ [第7题]+ [第8题]+[第9题]+[第10题] as 单科总分   FROM [nzcj] WHERE (([学年] = ?) AND ([学期] = ?) AND ([考试名称] = ?)   AND ([学生班级] LIKE '%' + ? + '%')) order by 学生学号 注意:我的数据表没有“单科总分”这一字段,它是通过[第1题]+ [第2题]+ [第3题]+ [第4题]+ [第5题]+ [第6题]+ [第7题]+ [第8题]+[第9题]+[第10题],这10个字段相加得来的。

解决方案 »

  1.   

    Select table1.语文总分 as 语文,table2.数学总分 as 数学 from (select [第1题]+ [第2题]+ [第3题]+ [第4题]+ [第5题]+ [第6题]+ [第7题]+ [第8题]+[第9题]+[第10题] as 语文总分)table1,(select [第1题]+ [第2题]+ [第3题]+ [第4题]+ [第5题]+ [第6题]+ [第7题]+ [第8题]+[第9题]+[第10题] as 数学总分)table2 where ......
      

  2.   

    这个Sql,比较难写,涉及到一点行列转换了。
      

  3.   

    select [学年], [学期], [考试名称], [学生班级], [学生姓名], [学生学号],
    (select ([第1题]+ [第2题]+ [第3题]+ [第4题]+ [第5题]+ [第6题]+ [第7题]+ [第8题]+[第9题]+[第10题] ) as total from nzcj where 考试科目='语文') as '语文成绩',
    (select (第1题]+ [第2题]+ [第3题]+ [第4题]+ [第5题]+ [第6题]+ [第7题]+ [第8题]+[第9题]+[第10题]) as total from nzcj where 考试科目='数学') as '数学成绩'
    from [nzcj]group by [学年], [学期], [考试名称], [学生班级], [学生姓名], [学生学号]
      

  4.   

    按科目创建各自的视图,再按人名JOIN.
      

  5.   

    drk928:
    按科目创建各自的视图,再按人名JOIN.这个方法好,我已经做出来了。SQL语句也可能可以,太复杂了,行列转换,不会。谢谢大家!!!