viernes, 6 de julio de 2012

Oracle 10G : Pivotar una tabla

Para simular la función PIVOT (introducida en oracle 11), podemos simularla en Oracle 10g con lo siguiente

Partimos de la tabla con la estructura:

( category , year, valor )

Year es el valor que queremos pivotar y tiene valores entre 2003 y 2010. Estos valores habrá que ponerlos a mano



SELECT
category,
 MAX(DECODE(year,'2003',valor,NULL))  a2003
,MAX(DECODE(year,'2004',valor,NULL)) a2004
,MAX(DECODE(year,'2005',valor,NULL)) a2005
,MAX(DECODE(year,'2006',valor,NULL)) a2006
,MAX(DECODE(year,'2007',valor,NULL)) a2007
,MAX(DECODE(year,'2008',valor,NULL)) a2008
,MAX(DECODE(year,'2009',valor,NULL)) a2009
,MAX(DECODE(year,'2010',valor,NULL)) a2010
FROM tabla
where year >= 2003
group by category;





obtendremos una tabla  como

category,a2003,a2004,a2005,a2006,a2007,a2008,a2009,a2010