Ver Mensaje Individual
  #6  
Antiguo 11-08-2017
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Reputación: 11
bucanero Va camino a la fama
hola,

un ejemplo simple para el uso de PIVOT mostrando las ventas de los clientes desglosadas por meses es:

Código SQL [-]
SELECT cliente, nombre, [1] as enero, [2] as febrero, [3] as marzo, [4] as abril, [5] as mayo, [6] as junio, [7] as julio, [8] as agosto, [9] as septiembre, [10] as octubre, [11] as noviembre, [12] as diciembre
FROM (
  select cliente, clientes.nombre, month(fecha) as mes, importe
  from ventas
  inner join clientes on clientes.codigo=cliente 
) AS datos PIVOT (
  sum(importe)
  FOR mes IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
) AS PivotTable
order by nombre;

para el caso en particular de una lista de datos se puede aplicar algo así:

Código SQL [-]
SELECT [1] as c1, [2] as c2, [3] as c3, [4] as c4, [5] as c5, [6] as c6, [7] as c7, [8] as c8, [9] as c9, [10] as c10, [11] as c11, [12] as c12
FROM (
  select 
      row_number() over(order by codigo) as num, 
      campo
  from tabla
) AS datos PIVOT (
  min(campo) 
  FOR num IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
) AS PivotTable

Importante, creo una especie de indice para las filas numerandolas, y para la tabla pivot, no vale poner solamente el nombre del campo, hay que aplicar alguna función, así que con poner la función min() es suficiente, y como pega en el FOR hay que poner tantos números como lineas pueda tener los datos.

Espero te pueda ser util
Un saludo
Responder Con Cita