Тъй като искате да завъртите няколко колони с данни, първо бих предложил да отмените завъртането на резултата
, резултат
и степен
колони, така че да нямате няколко колони, но ще имате няколко реда.
В зависимост от вашата версия на SQL Server, можете да използвате функцията UNPIVOT или CROSS APPLY. Синтаксисът за отмяна на центрирането на данните ще бъде подобен на:
изберете съотношение, колона, стойност от GRAND_TOTALScross apply( изберете 'резултат', cast(резултат като varchar(10)) съюз всички изберете 'резултат', cast(резултат като varchar(10)) съюз всички изберете 'оценка ', степен) c(col, value)
Вижте SQL Fiddle с демонстрация. След като данните бъдат отменени, можете да приложите функцията PIVOT:
изберете съотношение =col, [текущо съотношение], [коефициент на предавка], [коефициент на производителност], totalfrom( изберете съотношение, col, стойност от GRAND_TOTALS се прилага кръстосано ( изберете 'резултат', cast(резултат като varchar( 10)) union all изберете 'резултат', cast(резултат като varchar(10)) union all изберете 'grade', grade ) c(col, value)) dpivot( max(value) за съотношение в ([текущо съотношение], [предателно отношение], [коефициент на производителност], общо)) piv;
Вижте SQL Fiddle с демонстрация. Това ще ви даде резултата:
<предварителен код>| СООТНОШЕНИЕ | ТЕКУЩО КОЕФИЦИЕНТ | ПРЕДАКАТНО РАБОТА | КОЕФИЦИЕНТ НА ИЗПЪЛНЕНИЕ | ОБЩО ||--------|--------------|--------------|------ -------------|-----------|| клас | Добре | Добре | Задоволително | Добре || резултат | 1,29400 | 0,33840 | 0,04270 | (нула) || резултат | 60.00000 | 70,00000 | 50,00000 | 180,00000 |