Converter linhas de banco de dados em colunas
-
20-09-2019 - |
Pergunta
Preciso converter linhas de banco de dados em colunas e mostrar o resultado em GridView. Meu banco de dados é o seguinte:
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
.
.
.
Tenho que mostrar os resultados como abaixo:
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
Solução
Se você estiver usando o SQL Server 2005, poderá usar o operador pivô.
Aqui está o SQL Server 2005 T-SQL para fazer o que você deseja fazer:
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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow