Buscando el Internet y con la ayuda de uno de mis compañeros de trabajo, hemos podido convertir las N filas en N columnas (no como lo imaginé al principio, pero muy parecido). Comparto el código por si les interesa:
Código SQL:
Ver originalDECLARE @Lista VARCHAR(MAX)
DECLARE @Periodo AS DATETIME
SET @Periodo =(SELECT MIN(Periodo) FROM vwConsolidados WHERE Codigo = 'ABCDE001')
SET @Lista = N''
WHILE @Periodo IS NOT NULL
BEGIN
SET @Lista = @Lista + N',['+ CONVERT(VARCHAR, @Periodo, 103) + N']'
SET @Periodo =(SELECT MIN(Periodo) FROM vwConsolidados WHERE Periodo > @Periodo AND Codigo = 'ABCDE001')
END
print @Lista
SET @Lista = SUBSTRING(@Lista, 2, LEN(@Lista))
--PRINT 'ok'
--PRINT @Lista
DECLARE @Consulta AS nvarchar(MAX)
SET @Consulta = N'SELECT *
FROM (SELECT Periodo, Monto FROM vwConsolidados Where Codigo = ''ABCDE001''
)PIV
PIVOT (SUM(Monto) FOR Periodo IN ('+ @Lista + ')) AS Periodos'
EXEC sp_executesql @Consulta
Donde:
vwConsolidadoMediciones = nombre de una vista agrupada por Codigo y Periodo.
Monto = Sumatoria en la vista de un campo con el mismo nombre (Monto).
Y esta es una imágen de los resultados (vale destacar que los resultados de la suma son iguales porque en casi todos los casos son constantes):
Lo único que me falta es agregar el prefijo "Suma_" a los encabezados
¿Alguna sugerencia?