Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

pivot dinamico

Estas en el tema de pivot dinamico en el foro de SQL Server en Foros del Web. Hola. De antemano les agradezco sus respuestas. Tengo el siguiente código para intentar hacer un pívot dinámico: DECLARE @TableYears AS TABLE(excont nvarchar(50) NOT NULL) DECLARE ...
  #1 (permalink)  
Antiguo 06/01/2012, 16:35
 
Fecha de Ingreso: agosto-2011
Mensajes: 32
Antigüedad: 12 años, 8 meses
Puntos: 0
pivot dinamico

Hola.
De antemano les agradezco sus respuestas.
Tengo el siguiente código para intentar hacer un pívot dinámico:
DECLARE @TableYears AS TABLE(excont nvarchar(50) NOT NULL)
DECLARE @Year nvarchar(50), @YearsPVT NVARCHAR(500)
INSERT INTO @TableYears SELECT DISTINCT excont FROM tempjai
SET @Year = (SELECT MIN(excont) FROM @TableYears)
SET @YearsPVT=N''
WHILE @Year IS NOT NULL
BEGIN
SET @YearsPVT = @YearsPVT + N',['+ CONVERT(NVARCHAR(10),@Year) + N']'
SET @Year = (SELECT MIN(excont) FROM @TableYears WHERE excont>@Year)
END
SET @YearsPVT = SUBSTRING(@YearsPVT,2,LEN(@YearsPVT))
--PRINT @YearsPVT
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = N'SELECT *
FROM (
SELECT esnrso,excont, exvari FROM [109_11_11]
) pvt
PIVOT (sum(exvari) FOR excont IN (' + @YearsPVT + ')) AS PVJPQ
ORDER by esnrso'
EXECUTE sp_executesql @SQL

Pero cuando lo ejecuto me sale este error q no he podido corregir:
Unclosed quotation mark after the character string '0000)) AS PVJPQ
ORDER by esnrso'.

Alguien me puede ayudar gracias.
  #2 (permalink)  
Antiguo 07/01/2012, 18:02
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: pivot dinamico

Es difícil saber el valor final de @sql, pero puedes agregar el código print @sql antes del sp_executesql para ver los errores de sintaxis en la consulta generada.

Saludos
  #3 (permalink)  
Antiguo 10/01/2012, 16:55
 
Fecha de Ingreso: agosto-2011
Mensajes: 32
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: pivot dinamico

Bueno ps ya solucione el error... la verdad no supe era asi q por si alguien lo necesita dejo el codigo del q me funciono...

DECLARE @TableYears AS TABLE([Year] nvarchar(50) NOT NULL)
DECLARE @Year nvarchar(50), @YearsPVT NVARCHAR(max)
INSERT INTO @TableYears SELECT DISTINCT EXVARI AS [Year] FROM tempjai
SET @Year = (SELECT MIN([Year]) FROM @TableYears)
SET @YearsPVT=N''
WHILE @Year IS NOT NULL
BEGIN
SET @YearsPVT = @YearsPVT + N',['+ CONVERT(NVARCHAR(50),@Year) + N']'
SET @Year = (SELECT MIN([Year]) FROM @TableYears WHERE [Year]>@Year)
END
SET @YearsPVT = SUBSTRING(@YearsPVT,2,LEN(@YearsPVT))
--PRINT @YearsPVT
DECLARE @SQL NVARCHAR(MAX)
SET @SQL = N'SELECT *
FROM (
SELECT ESNRSO, EXVARI [Year],excont FROM tempjai
) pvt
PIVOT (max(excont) FOR [Year] IN (' + @YearsPVT + ')) AS PVJPQ
ORDER by esnrso'
EXECUTE sp_executesql @SQL

Etiquetas: dinamico, pivot, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 11:57.