En este artículo hay otro ejemplo del uso de las tablas agregadas. Ahora, las usaremos para ver en columnas las ventas realizadas durante cada mes del año.

NOTA IMPORTANTE:

Los stored procedures CREAR_TABLA_PIVOT y ACTUALIZAR_TABLA_PIVOT han sido levemente modificados. Como seguramente sabes siempre el código fuente puede ser mejorado, y eso es justamente lo que sucedió con ellos. Las más nuevas versiones podrás descargar desde:

http://www.mediafire.com/view/ol58gyejul1t43a/CREAR_TABLA_PIVOT.txt

http://www.mediafire.com/view/1uebv8uerc5kwpe/ACTUALIZAR_TABLA_PIVOT.txt

Necesitarás de las nuevas versiones para que te funcionen los ejemplos que vienen a continuación.

Listado 1. La vista V_VENTAS

CREATE VIEW V_VENTAS(
   MVC_IDECLI,
   NOMBRE_MES,
   MVC_NOMCLI,
   MVC_TOTALX)
AS
   SELECT
      MVC_IDECLI,
      'MES_' ||
      LPAD(EXTRACT(MONTH FROM MVC_FECHAX), 2, '0') || '_' ||
      DECODE(
         EXTRACT(MONTH FROM MVC_FECHAX),
          1, 'ENE',
          2, 'FEB',
          3, 'MAR',
          4, 'ABR',
          5, 'MAY',
          6, 'JUN',
          7, 'JUL',
          8, 'AGO',
          9, 'SEP',
         10, 'OCT',
         11, 'NOV',
         12, 'DIC') AS NOMBRE_MES,
         C.CLI_NOMBRE AS MVC_NOMCLI,
         M.MVC_TOTALX
      FROM
         MOVIMCAB M
      JOIN
         CLIENTES C
            ON M.MVC_IDECLI = C.CLI_IDENTI;

AGREGADAS1

Captura 1. Si haces clic en la imagen la verás más grande

Ahora creamos la tabla agregada VENTAS1:

Listado 2. La tabla agregada VENTAS1

EXECUTE PROCEDURE
   CREAR_TABLA_PIVOT (
      'VENTAS1',
      'V_VENTAS',
      'MVC_IDECLI INTEGER',
      'MVC_NOMCLI VARCHAR(40)',
      'NOMBRE_MES',
      'NUMERIC(17, 4)')

AGREGADAS2

Captura 2. Si haces clic en la imagen la verás más grande

Y a continuación le agregamos datos:

Listado 3. Insertando filas a la tabla VENTAS1

EXECUTE PROCEDURE
   ACTUALIZAR_TABLA_PIVOT (
      'VENTAS1',
      'V_VENTAS',
      'MVC_IDECLI INTEGER',
      'MVC_NOMCLI VARCHAR(40)',
      'NOMBRE_MES',
      'SUM(MVC_TOTALX)')

AGREGADAS3

Captura 3. Si haces clic en la imagen la verás más grande

Y listo, ya está. Ya tenemos nuestra tabla agregada con un Cliente por cada fila y las ventas mensuales en las siguientes columnas. Este tipo de tablas puede ser muy útil para la toma de decisiones.

Fíjate que lo único que necesitamos hacer es escribir una vista que contenga los datos que utilizaremos, los stored procedures CREAR_TABLA_PIVOT y ACTUALIZAR_TABLA_PIVOT se encargan de todo lo demás.

Si no queremos ver los Identificadores de los clientes entonces podríamos crear la tabla de esta manera:

Listado 4. La tabla VENTAS1 sin los identificadores de los clientes

EXECUTE PROCEDURE
   CREAR_TABLA_PIVOT (
      'VENTAS1',
      'V_VENTAS',
      'MVC_NOMCLI VARCHAR(40)',
      '',
      'NOMBRE_MES',
      'NUMERIC(17, 4)')

La actualizaríamos así:

Listado 5. Insertando filas a la tabla VENTAS1 sin los identificadores de los clientes

EXECUTE PROCEDURE
   ACTUALIZAR_TABLA_PIVOT (
      'VENTAS1',
      'V_VENTAS',
      'MVC_NOMCLI VARCHAR(40)',
      '',
      'NOMBRE_MES',
      'SUM(MVC_TOTALX)')

Y obtendríamos este resultado:

AGREGADAS4

Captura 4. Si haces clic en la imagen la verás más grande

Que es bastante similar al anterior pero no idéntico ¿por qué no? porque en el anterior las filas aparecían ordenadas por Identificador del Cliente y en el actual aparecen ordenadas por Nombre del Cliente. Es decir que las filas siempre aparecen ordenadas por el contenido de la primera columna.

Artículos relacionados:

Creando y actualizando tablas agregadas de uso general

Otro ejemplo de uso de tablas agregadas

El índice del blog Firebird21

Anuncios