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.
lunes, 3 de junio de 2013
La siguiente mini aplicación muestra como conectarse a una base de datos ingresando de forma manual los parámetros de conexión (bd, puerto, etc) y luego visualizar los datos de cualquiera de las tablas de la BD seleccionada, lo diferente que tiene a la mayoría de ejemplos mostrados en Internet es que se cargan las columnas de forma dinámica es decir que se cargan todas las columnas de la tabla y no solo un numero estático de columnas definidas en el programa, lo cual puede servir en muchos casos, con esto se tiene la conexión y la lectura de datos, si se quiere hacer cualquier otro uso como insertar , eliminar etc, se puede seguir el mismo patrón partiendo de este ejemplo.
En el .zip va incluido el driver (ultima version) para conectar java con postgres, se realizo en netbeans 7.3 con jdk 7u21.
La aplicación se ve así:
y en el cuadro de dialogo ingresan los valores correspondientes y en el combobox de la ventana principal pueden ver las tablas disponibles y ver los datos de cada una.
Pueden descargarla en: Java - Postgres
Nota: El código no es el mas optimo que digamos porque no tenia tiempo para mejorarlo, la prioridad era que funcionara XD y lo pueden notar en los métodos de la clase conexión pero puede ser mejorado y/o modificada de acuerdo a las necesidades.
Créditos a: http://gnucesar.wordpress.com/2008/07/22/conexion-a-postgres-desde-java/ ya que a partir de esta clase me base para hacer la conexión.
En el .zip va incluido el driver (ultima version) para conectar java con postgres, se realizo en netbeans 7.3 con jdk 7u21.
La aplicación se ve así:
y en el cuadro de dialogo ingresan los valores correspondientes y en el combobox de la ventana principal pueden ver las tablas disponibles y ver los datos de cada una.
Pueden descargarla en: Java - Postgres
Nota: El código no es el mas optimo que digamos porque no tenia tiempo para mejorarlo, la prioridad era que funcionara XD y lo pueden notar en los métodos de la clase conexión pero puede ser mejorado y/o modificada de acuerdo a las necesidades.
Créditos a: http://gnucesar.wordpress.com/2008/07/22/conexion-a-postgres-desde-java/ ya que a partir de esta clase me base para hacer la conexión.
Suscribirse a:
Entradas (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.