2010-06-16 160 views
2

我有一个超过100万个测试分数记录的表,基本上有一个唯一的score_ID,subject_ID和一个人给出的分数。大多数科目的分数范围是0-3,但有些范围是0-4。大约有25个可能的主题。通过SQL查询获取字段值分布

我需要产生分数分布报告,它看起来像:

subject_ID  0 1 2 3 4 
---------- --- --- --- --- --- 
1    967 576 856 234 
2    576 947 847 987 324 
. 
. 

所以它按subject_ID数据,然后显示一个特定的分数值多少次主题内给予。

任何SQL指针来产生这将不胜感激。

回答

6
Select subject_id 
    , Sum(Case When Score = 0 Then 1 Else 0 End) As [0] 
    , Sum(Case When Score = 1 Then 1 Else 0 End) As [1] 
    , Sum(Case When Score = 2 Then 1 Else 0 End) As [2] 
    , Sum(Case When Score = 3 Then 1 Else 0 End) As [3] 
    , Sum(Case When Score = 4 Then 1 Else 0 End) As [4] 
From Table 
Group By subject_id 
+0

完美。我认为这可能涉及使用Case语句。 – 2010-06-16 21:15:45