Если вы используете SQL Server 2005, вы можете использовать оператор Pivot.
См. Эту статью MSDN .
Вот SQL Server 2005 T-SQL, чтобы делать то, что вы хотите:
DECLARE @listCol VARCHAR(2000)
DECLARE @query VARCHAR(4000)
SELECT @listCol = STUFF(( SELECT DISTINCT
'],[' + Hotel
FROM dbo.tblHotels
ORDER BY '],[' + Hotel
FOR XML PATH('')
), 1, 2, '') + ']'
SET @query =
'SELECT * FROM
(SELECT cDate,Hotel,price
FROM dbo.tblHotels) p
PIVOT (SUM(price) FOR Hotel
IN ('+@listCol+')) AS pvt'
EXECUTE (@query)