Karena Anda ingin memutar beberapa kolom data, pertama-tama saya sarankan untuk tidak memutar result
, score
dan grade
kolom sehingga Anda tidak memiliki banyak kolom tetapi Anda akan memiliki beberapa baris.
Tergantung pada versi SQL Server Anda, Anda dapat menggunakan fungsi UNPIVOT atau CROSS APPLY. Sintaks untuk menghapus data akan mirip dengan:
select ratio, col, value
from GRAND_TOTALS
cross apply
(
select 'result', cast(result as varchar(10)) union all
select 'score', cast(score as varchar(10)) union all
select 'grade', grade
) c(col, value)
Lihat SQL Fiddle dengan Demo. Setelah data tidak dipivot, Anda dapat menerapkan fungsi PIVOT:
select ratio = col,
[current ratio], [gearing ratio], [performance ratio], total
from
(
select ratio, col, value
from GRAND_TOTALS
cross apply
(
select 'result', cast(result as varchar(10)) union all
select 'score', cast(score as varchar(10)) union all
select 'grade', grade
) c(col, value)
) d
pivot
(
max(value)
for ratio in ([current ratio], [gearing ratio], [performance ratio], total)
) piv;
Lihat SQL Fiddle dengan Demo. Ini akan memberi Anda hasilnya:
| RATIO | CURRENT RATIO | GEARING RATIO | PERFORMANCE RATIO | TOTAL |
|--------|---------------|---------------|-------------------|-----------|
| grade | Good | Good | Satisfactory | Good |
| result | 1.29400 | 0.33840 | 0.04270 | (null) |
| score | 60.00000 | 70.00000 | 50.00000 | 180.00000 |