miércoles, 4 de septiembre de 2013
Pivote Dinámico para Ejemplo Anterior
CREATE PROCEDURE [Tutorial].[UspPivoteDinamicoEjemplo]
@IdValorParametro INT
AS
DECLARE @Pivotiar VARCHAR(MAX) = ''
DECLARE @PivotiarSuma VARCHAR(MAX) = ''
--DECLARACION DE LA TABLA PARA INSERTAR LOS CAMPOS COLUMNAS
DECLARE @TblColumnas TABLE
(
Id INT IDENTITY(1,1),
Columna VARCHAR(20)
)
--RELLENANDO LA TABLA
INSERT INTO @TblColumnas
SELECT [Description] FROM Tutorial.Catalogos
WHERE IdCatalogo = @IdValorParametro
ORDER BY [Description] DESC
SET @Pivotiar = @Pivotiar + (SELECT ',['+ Columna + ']' FROM @TblColumnas FOR XML PATH(''))--PARA CONVERTIR LAS FILAS A UNA SOLA VARIABLE CONCATENANDO CON COMA
SET @Pivotiar = SUBSTRING(@Pivotiar,2,LEN(@Pivotiar)) --PARA QUITAR LA PRIMAR COMA
SET @PivotiarSuma = REPLACE(@Pivotiar,',','+')--PARA HACER CALCULOS EN EL SELECT CON LAS COLUMNAS
EXEC('SELECT ROW_NUMBER() OVER(ORDER BY IdCampo DESC) AS Id,*,('+@PivotiarSuma+') AS Total
FROM (
SELECT * FROM Tutorial.VwVistaConValores WHERE IdParametro = '+@IdValorParametro +
') Pvt
PIVOT (SUM(Monto) FOR [Description] IN ('+@Pivotiar+')) AS Pivote')
Suscribirse a:
Comentarios de la entrada (Atom)
No hay comentarios.:
Publicar un comentario