0

我从不同的表中填充了两列数据:

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'

有没有一种有效的方法可以使用像 group by 这样的东西?

4

1 回答 1

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。

于 2013-09-20T10:11:27.143 回答