2010-06-16 3 views
2

У меня есть таблица с более чем 1 миллионом записей тестов, которые в основном имеют уникальный 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

Perfect. Я думал, что это может включать использование оператора Case. –

Смежные вопросы