ピボット テーブルを確認してください。
http://msdn.microsoft.com/en-us/library/ を参照してください。 ms177410.aspx
有限数の StatusTypeNames に対する単純なクエリは次のようになります。
SELECT * FROM
(SELECT MonthName, StatusTypeName as attributeCol, StatusCount FROM @ResultsTable) rt
PIVOT ( MAX(StatusCount) FOR attributeCol in ([ToBeScheduled],[Complete])) as pvt
ORDER BY MonthName
MAX の使用に注意してください。月名とステータス タイプ名の組み合わせが同じ行が複数ある可能性がある場合は、SUM を使用することをお勧めします。
madhivinan が提案するように動的列を利用するには、 この例 一番下までスクロールします。
私はそれをあなたの例で動作させようとしましたが、おそらくテーブルがなかったためにいくつかの問題があったためです。ただし、次のようなものが目的です。
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)
正確ではありませんが、これが出発点です。
頑張ってください。