2009-12-22 108 views
1

我需要將數據庫行轉換爲列並在GridView中顯示結果。我的DB如下:將數據庫行轉換爲列

ID Hotel cDate     Price 
----------------------------------------------- 
1 Hotel1 12/22/2009 12:00:00 AM 15.0000 
2 Hotel2 12/22/2009 12:00:00 AM 25.0000 
3 Hotel3 12/22/2009 12:00:00 AM 60.0000 
4 Hotel4 12/22/2009 12:00:00 AM 55.0000 
. 
. 
. 

我已經表現出如下結果:

cDate     Hotel1 Hotel2 Hotel3 Hotel4 
12/22/2009 12:00:00 PM 15  25  60  55 
12/22/2009 12:00:00 AM ..  ..  ..  .. 
12/22/2009 12:00:00 AM 
12/22/2009 12:00:00 AM 

回答

2

如果你使用SQL Server 2005,那麼你可以使用PIVOT運算符。

See this MSDN article

這裏的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 ('[email protected]+')) AS pvt' 

EXECUTE (@query)