次のようにしてみてください:
DECLARE @myTable AS TABLE([ID] INT, [Field] VARCHAR(20), [Value] VARCHAR(20)) INSERT INTO @myTable VALUES ('1', 'year', '2011') INSERT INTO @myTable VALUES ('1', 'month', 'August') INSERT INTO @myTable VALUES ('2', 'year', '2009') INSERT INTO @myTable VALUES ('1', 'day', '21') INSERT INTO @myTable VALUES ('2', 'day', '31') INSERT INTO @myTable VALUES ('2', 'month', 'July') INSERT INTO @myTable VALUES ('3', 'year', '2010') INSERT INTO @myTable VALUES ('3', 'month', 'January') INSERT INTO @myTable VALUES ('3', 'day', NULL) SELECT [ID], [year], [month], [day] FROM ( SELECT [ID], [Field], [Value] FROM @myTable ) t PIVOT ( MIN([Value]) FOR [Field] IN ([year], [month], [day]) ) AS pvt ORDER BY pvt.[year] DESC
プレ>結果は次のようになります:
ID year month day 1 2011 August 21 3 2010 January NULL 2 2009 July 31
プレ>