martes, 4 de junio de 2013
Las tablas pivote sirven para presentar los
datos de una forma mas estructurada, reportes, mostrar totales etc, a modo de
darle una mejor vista a los datos y que sean mas entendibles al mismo tiempo.
Esto se puede realizar con sql básico que es aceptado por
cualquier DBMS y también haciendo uso de la función "pivot" que no
pertenece al estándar sql pero que es aceptada por algunos dbms.
Oracle implemento el uso de esta función a partir de la versión 11
(según leí) por lo que en versiones anteriores no es reconocida, se usaba la función DECODE que trabaja de forma similar.
Los siguientes ejemplos están realizados en oracle 11.2 XE versión
para windows y prácticamente sirven para mostrar como pasar una consulta pivote
realizada con sql básico a una realizada con la función pivot, la cual nos
simplifica el código de la consulta.
Se tiene la siguiente
consulta con tabla pivote realizada con sql básico
Para realizar esta misma consulta con la función pivot se realiza lo siguiente :
1. Seleccionamos los campos que necesitamos en este caso el año y el mes donde cada año representa una fila y los meses las columnas.
Select * (Select extract(year from fecha_inventario) as anio,extract(month from fecha_inventario) as mes From equipos S )
2. Escribir la instrucción pivot a continuación de la consulta anterior
3. Hacer la función de agregación que necesitamos en este caso “count” y realizar el FOR y el IN
Pivot ( Count (mes) For mes in (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) ) order by anio
Count (mes) para contar el numero de equipos por cada mes y luego el FOR<campo>
Como se puede observar al encontrar un “1” se devolverá “enero” y así sucesivamente.
y con esto ya esta realizada la consulta con la función PIVOT.
Nota: al incluir la clausula IN solamente se puede indicar un conjunto de valores, es decir un listado previamente conocido de valores ya que si queremos agregar las columnas de forma dinámica haciendo un SELECT IN nos dará un error ya que la función pivot no permite trabajar de esta manera.
Por ultimo un ejemplo de una consulta que agrega totales verticales y lo unico que se hace es un UNION ALL.
Suscribirse a:
Enviar comentarios (Atom)
Search
Categories
android
(2)
Animacion 3D
(3)
aspx
(4)
bases de datos
(7)
Blender
(3)
C
(1)
C#
(4)
cisco
(1)
Compiladores
(11)
conceptos
(1)
cup
(2)
DB2
(2)
gns3
(5)
Irony
(3)
Java
(3)
kvm
(1)
linux
(5)
manual express latex
(1)
MongoDB
(1)
ocio
(3)
oracle
(3)
poo
(1)
Postgresql
(4)
programacion
(9)
Redes
(7)
resumen
(1)
soluciones
(1)
SQL
(16)
sqlserver
(1)
teoría
(5)
Ubuntu
(9)
Uwintu
(1)
VB
(1)
windows
(2)
Statistics
Con la tecnología de Blogger.
0 comentarios:
Publicar un comentario