2009-12-22 4 views
1

Je dois convertir les lignes de base de données en colonnes et afficher le résultat dans Gridview. Mon DB est la suivante:Convertir les lignes de base de données en colonnes

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 
. 
. 
. 

J'ai pour afficher les résultats comme suit:

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 

Répondre

2

Si vous utilisez SQL Server 2005, vous pouvez utiliser l'opérateur pivot.

See this MSDN article.

Voici le SQL Server 2005 T-SQL pour faire ce que vous voulez faire:

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) 
Questions connexes