Вы можете сделать это с PIVOT. (Обратите также внимание, что эта формулировка вычисления метки-буквы немного безопаснее, чем та, в которой должны быть напечатаны оба конца каждого диапазона.)
with T as (
select
Teacher_ID,
Course_ID,
case
when Marks <= 5 then 'countD'
when Marks <= 10 then 'countC'
when Marks <= 15 then 'countB'
else 'countA' end as Letter
from T
)
select
Teacher_ID,
Course_ID,
countD+countC+countB+countA as countMarks,
countA,
countB,
countC,
countD
from T pivot (
count(Letter) for Letter in ([countA],[countB],[countC],[countD])
) as P