У меня есть таблица данных, которая выглядит следующим образом:
|Agency|Rating |AVG|
------------------------
|Army |Exceptional|10 |
|Navy |Very Good |8.5|
И мне нужно повернуть / посчитать число каждого типа рейтинга, а также вычислить итоги и проценты для каждой категории рейтинга, чтобы это выглядело так:
|Rating |Army|Navy|
--------------------------
|Exceptional |1 |0 |
|Very Good |0 |1 |
|Satisfactory |0 |0 |
|Marginal |0 |0 |
|Unsatisfactory|0 |0 |
|Total |1 |1 |
|% of Ex |100 |0 |
|% of VG |0 |100 |
|% of Sat |0 |0 |
|% of Mar |0 |0 |
|% of Uns |0 |0 |
Использование следующего запроса:
select RatingWords as Rating, case when grouping([RatingWords]) = 1 then
'Total' else [RatingWords] end as [RatingWords], Sum([Navy]) as Navy,
sum([Army]) as Army
from
(select ratingwords, agency,
CASE WHEN Average BETWEEN 8.6 AND 10 THEN 1 else 0 end as Exceptional,
case WHEN Average BETWEEN 7.1 AND 8.5 THEN 1 else 0 end as VeryGood,
case WHEN Average BETWEEN 3.1 AND 7.0 THEN 1 else 0 end as Satisfactory,
case WHEN Average BETWEEN 0.1 AND 3.0 THEN 1 else 0 end as Marginal,
case WHEN Average = 0 THEN 1 ELSE 0 END as Unsatisfactory
from dbo.DOD_Average) as sourcetable
pivot
(
Count(exceptional)
for Agency in ([Navy], [Army])
) as PivotTable
group by grouping sets ((RatingWords),())
Я получаю следующую таблицу:
|Rating |Army|Navy|
--------------------------
|Exceptional |1 |0 |
|Very Good |0 |1 |
|Satisfactory |0 |0 |
|Marginal |0 |0 |
|Unsatisfactory|0 |0 |
|Total |1 |1 |
Итак, мой вопрос, как я могу добавить другую группу ниже строки Всего для вычисления процентов? Или, если это не лучший способ создать этот отчет, я готов его переработать.