
PIVOT con columnas dinámicas.
Publicado por Juan Manuel Cruz (59 intervenciones) el 22/06/2011 13:45:44
Hola, estoy realizando una consulta que requiere tablas cruzadas, con la cláusula PIVOT, pero me topo con un problema: no sé por adelantado las columnas que me van a resultar, y ese es un gran lastre porque actualmente debo codificarlas una a una.
Por ejemplo, si son meses, pues se sabe que son 12, pero aún así debo codificar de esta manera:
SELECT PROVEEDOR_ID, [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]
FROM (
SELECT isnull(proveedo.nombre,pagos.proveedor_id) as PROVEEDOR_ID, MONTH(FECHA) AS MES, IMPORTE FROM PAGOS
left outer join proveedo on pagos.proveedor_id=proveedo.cod_pro
WHERE YEAR(FECHA)=2010
) AS FUENTE
PIVOT
( SUM(IMPORTE) FOR MES IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12] )
) AS DESTINO
¿Hay manera de ahorrarse poner en código duro cada una de las columnas?
Saludos.
Por ejemplo, si son meses, pues se sabe que son 12, pero aún así debo codificar de esta manera:
SELECT PROVEEDOR_ID, [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]
FROM (
SELECT isnull(proveedo.nombre,pagos.proveedor_id) as PROVEEDOR_ID, MONTH(FECHA) AS MES, IMPORTE FROM PAGOS
left outer join proveedo on pagos.proveedor_id=proveedo.cod_pro
WHERE YEAR(FECHA)=2010
) AS FUENTE
PIVOT
( SUM(IMPORTE) FOR MES IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12] )
) AS DESTINO
¿Hay manera de ahorrarse poner en código duro cada una de las columnas?
Saludos.
Valora esta pregunta


0