请教:SQL语句问题,谢谢!(100分)

  • 主题发起人 主题发起人 zfmich
  • 开始时间 开始时间
Z

zfmich

Unregistered / Unconfirmed
GUEST, unregistred user!
我有这样一个表 ;UCode, ExamCode, QCode, Mark
有什么比较好的方法得到每个学生各次考试的成绩,以便于横向比较学生的各次考试;

就是想得到这样的格式:
UCode, MarkOfExamCode1, MarkOfExamCode2,...

例如:
ucode examcode qcode mark
1 1 1 2
1 1 2 3
1 2 1 1
1 2 2 3

我想得到以下结果
ucode mark1 mark2
1 5 4
有什么比较简单的方法?

目前我的想法是
select
(select Sum(mark) from table where ucode = ucode1 and examcode = examcode1 group by ucode, examcode) as Mark1,
(select Sum(mark) from table where ucode = ucode1 and examcode = examcode2 group by ucode, examcode) as Mark2
from table

然后根据UCODE用UNION,很笨的方法
 
select ucode,sum(case when examcode=1 then mark else 0 end) as mark1,
sum(case when examcode=2 then mark else 0 end)as mark2
from tablename
group by ucode
 
上面的应该更合理!
 
后退
顶部