有一张学生成绩表(Score),结构如下:编号      学 号     姓 名       科 目         成绩
 1       990938     李四        英语          85
 2       990383     王五        高数          90
 3       993834     张三        英语          78
 4       990938     李四        高数          95
 5       990383     王五        英语          70
 6       993834     张三        高数          88
 ……现在要根据该表,产生成绩报表,报表结构如下:  学 号    姓 名   英语     高数
 990938    李四    85       95
 990383    王五    70       95
 993834    张三    78       88
 ……不知产生上表的SQL语句怎么写(或怎么解决该问题),请高手指点,谢谢!!

解决方案 »

  1.   

    SELECT fstu_id, fstu_name,
     英语= sum(CASE fkm WHEN '英语' THEN fscore ELSE 0 END), 高数=sum(CASE fkm WHEN '高数' THEN fscore ELSE 0 END)  FROM Txscj GROUP BY fstu_id, fstu_nameSQL Server下通过
      

  2.   

    用decode韩书即可
     select 学号,姓名,decode(科目,英语,'成绩',' ')  英语,decode(科目,高数,'成绩',' ')  高数 
     from Score;
      

  3.   

    用decode函数即可(Oracle 数据库下)
     select 学号,姓名,decode(科目,英语,'成绩',' ')  英语,decode(科目,高数,'成绩',' ')  高数 
     from Score;
      

  4.   

    select
     Id,
     Name,
    (Select 成绩 From Score where Id=T.Id and 课程='英语') as 英语,(Select 成绩 From Score where Id=T.Id and 课程='高数') as 高数 
    from Score as T
    group by Id
      

  5.   

    如果只有英语、高数难上面可能实现,但实际上可能有多门功课,所以建议你用存储过程写入临时表。不过以前在csdn好像看到类似贴子可以用sql语句实现,你搜索一下
      

  6.   

    如果只有英语、高数可以实现
    Select 学号,姓名,(Case '科目' When '英语' then 成绩 end) as 英语,
    (Case '科目' When ' 高数' then 成绩 end) as  高数 group by 学号