Todos estamos esperando utilizar el Oracle 11 que nos ahorre estos dolores de cabeza, pero mientras llega...
Si alguna vez se han preguntado ¿Puedo cambiar mis columnas a filas? Ejemplo:
Tenemos:
UNIDAD VALOR1 VALOR2 VALOR3
1 100 200 300
2 400 500 600
Queremos:
UNIDAD VALOR PRECIO
1 VALOR1 100
1 VALOR2 200
1 VALOR3 300
2 VALOR1 400
2 VALOR2 500
2 VALOR3 600
Sí! Es posible! Esto se llama unpivot, y la forma de hacerlo 'a la antigua' es:
SELECT UNIDAD, 'VALOR'l as VALOR,
DECODE(l, 1, VALOR1,
DECODE(l, 2, VALOR2,
DECODE(l, 3, VALOR3,
DECODE(l, 4, VALOR4,
DECODE(l, 5, VALOR5,
DECODE(l, 6, VALOR6 )))))) UNPIVOT
FROM TABLA,
(SELECT level l FROM DUAL X CONNECT BY LEVEL <= 6) NIVEL;
Esta es la página donde aparece el ejemplo:
http://www.club-oracle.com/forums/f6/unpivoting-column-to-row-conversion-techniques-sql-t145/
martes, 31 de marzo de 2009
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario