我有两列数据来自不同的表:
KS2 Result
4a C
4a C
3c C+
3c C-
5a B
5a B
5a B
5a C+
我想将此转换为总计网格,例如:
C- C C+ B
3c 1 - 1 -
4a - 2 - -
5a - - 1 3
( - 表示NULL)
我用来填充列的SQL是:
select ks2en, result
from student
join subject on subject.upn=student.upn
where name='English'
是否有一种有效的方法可以使用类似群组的方式?
答案 0 :(得分:1)
您可以按ks2en列进行分组,并使用CASE分别计算结果。
select ks2en,
count(case result when 'C-' then 1 end),
count(case result when 'C' then 1 end),
count(case result when 'C+' then 1 end),
count(case result when 'B' then 1 end),
from student join subject
on subject.upn=student.upn
where name='English'
group by ks2en;
输出:
ks2en C- C C+ B
--------------------------
3c 1 0 1 0
4a 0 2 0 0
5a 0 0 1 3
请注意,如果没有适用的成绩,这将给你0而不是null。