Lihat tabel pivot;
Lihat http://msdn.microsoft.com/en-us/library/ ms177410.aspx
Permintaan sederhana untuk jumlah StatusTypeNames yang terbatas akan menjadi seperti;
SELECT * FROM
(SELECT MonthName, StatusTypeName as attributeCol, StatusCount FROM @ResultsTable) rt
PIVOT ( MAX(StatusCount) FOR attributeCol in ([ToBeScheduled],[Complete])) as pvt
ORDER BY MonthName
Perhatikan penggunaan MAX. Jika ada kemungkinan Anda akan memiliki beberapa baris dengan kombinasi nama bulan dan nama tipe status yang sama, maka Anda mungkin ingin menggunakan SUM.
Untuk menggunakan kolom dinamis seperti yang disarankan madhivinan, Anda dapat mengikuti contoh ini. Gulir ke bawah.
Saya mencoba membuatnya bekerja dengan contoh Anda, tetapi karena saya memiliki beberapa masalah mungkin karena saya tidak memiliki tabel. Namun, sesuatu seperti berikut ini adalah apa yang Anda cari.
DECLARE @listCol VARCHAR(2000)
DECLARE @query VARCHAR(4000)
SELECT @listCol = SELECT STUFF (( SELECT DISTINCT '],[' +
StatusTypeName FROM @ResultsTable ORDER BY '],[' +
StatusTypeName FOR XML PATH ('')), 1, 2, '') + ']'
SET @query =
'SELECT * FROM
(SELECT MonthNameCol, StatusTypeName as attributeCol, StatusCount FROM @ResultsTable) rt
PIVOT ( MAX(StatusCount) FOR attributeCol in ('[email protected]+')) AS pvt ORDER BY MonthNameCol'
EXECUTE (@query)
Ini tidak sepenuhnya benar, tetapi ini adalah titik awal.
Semoga berhasil.