PL-SQL Procedures en Oracle

Aprender a transformar las filas en columnas de una tabla, te permitirá mostrar los datos de una forma diferente a lo habitual en tus PL-SQL Procedures en Oracle, donde la información se podrá apreciar de distintos ángulos o distintas perspectivas.

Cuando trabajas construyendo PL-SQL Procedures en Oracle, muchas veces se requiere desplegar la información de distinta forma, como por ejemplo, transformar las filas de una tabla en columnas, lo que no resulta ser una tarea fácil de realizar.

A muchos desarrolladores les cuesta mucho construir este tipo de tareas y de hecho puede llegar a ser una tarea muy difícil que muchos no logran finalizar, y si lo logran han debido construir un código gigantesco.

A mí siempre me ha gustado buscar la simplicidad para hacer las cosas; y logre encontrar una forma más simple de convertir las filas a columnas de una tabla, la que cuando la descubrí, me sorprendió mucho por lo fácil que es de implementar en los PL-SQL Procedures en Oracle. Revisemos de inmediato esta técnica con un ejemplo práctico de como se debe hacer.

Ejemplo #1: Supone que tienes una tabla que contiene los posibles estados civiles de una persona, los que debes mostrar como columnas, veamos como hacerlo:

Tabla t_estado_civil: Esta tabla contiene 5 estados civiles definidos para mostrarlos como columna.

/* PL-SQL Procedures en Oracle */

id_estado_civil descripcion

1 SOLTERO

2 CASADO

3 SEPARADO

4 VIUDO

5 OTROS

Query para dejar las filas como columnas:

/* PL-SQL Procedures en Oracle */

Select

‘Estados:’ titulo,

max( decode( eciv.id_estado_civil, 1, eciv.descripcion)) col_1,

max( decode( eciv.id_estado_civil, 2, eciv.descripcion)) col_2,

max( decode( eciv.id_estado_civil, 3, eciv.descripcion)) col_3,

max( decode( eciv.id_estado_civil, 4, eciv.descripcion)) col_4,

max( decode( eciv.id_estado_civil, 5, eciv.descripcion)) col_5

From t_estado_civil eciv;

Esta simple query permite mostrar las filas de la tabla t_estado_civil como columna, mostrándolas de la siguiente forma:

/* PL-SQL Procedures en Oracle */

Titulo col_1 col_2 col_3 col_4 col_5

Estados: SOLTERO CASADO SEPARADO VIUDO OTROS

El truco se encuentra en utilizar la función de grupo MAX, la que permite obtener el valor máximo o mayor de una columna.

Ejemplo #2: En el ejemplo anterior se logró mostrar las filas como columnas de la tabla t_estado_civil, veamos ahora como mostrar datos congruentes con estas columnas, usando la misma técnica:

Query para agregar datos como filas a cada columna:

/* PL-SQL Procedures en Oracle */

Select
‘Estados:’ departamento,
max( decode( eciv.id_estado_civil, 1, eciv.descripcion)) col_1,
max( decode( eciv.id_estado_civil, 2, eciv.descripcion)) col_2,
max( decode( eciv.id_estado_civil, 3, eciv.descripcion)) col_3,
max( decode( eciv.id_estado_civil, 4, eciv.descripcion)) col_4,
max( decode( eciv.id_estado_civil, 5, eciv.descripcion)) col_5
From t_estado_civil eciv
Union all /* PL-SQL Procedures en Oracle */
Select
to_char(emp.id_departamento) departamento,
to_char(sum( decode( emp.id_estado_civil, 1, 1, 0))) cant_col_1,
to_char(sum( decode( emp.id_estado_civil, 2, 1, 0))) cant_col_2,
to_char(sum( decode( emp.id_estado_civil, 3, 1, 0))) cant_col_3,
to_char(sum( decode( emp.id_estado_civil, 4, 1, 0))) cant_col_4,
to_char(sum( decode( emp.id_estado_civil, 5, 1, 0))) cant_col_5
From t_empleado emp
Group by emp.id_departamento

A la query del primer ejemplo, se agrego una segunda query unida por el union all, para obtener la cantidad de estados civiles acumulados por cada departamento. Esta consulta entrega los siguientes resultados:

/* PL-SQL Procedures en Oracle */

Departamento col_1 col_2 col_3 col_4 col_5

Estados: SOLTERO CASADO SEPARADO VIUDO OTROS

101 10 15 0 0 2

102 0 0 4 12 0

105 0 32 8 0 13

El truco en esta segunda query se encuentra en la función de grupo SUM la que permite unificar los datos en una sola fila.

Te propongo que pruebes de inmediato estos ejemplos en tu Base de Datos con tus propios PL-SQL Procedures en Oracle y PL-SQL Function en Oracle, para que comiences a ejercitar la mano y aprendas a dominar esta nueva técnica en tus PL-SQL Packages en Oracle.

Estoy muy interesado en conocer tu opinión y/o comentario sobre este artículo, también cuéntame sobre qué es lo que quieres saber de PL-SQL Procedures en Oracle y/o dime cuál es tu principal frustración a la hora de trabajar con PL-SQL Procedures en Oracle. Estaré muy atento respondiendo tus preguntas y/o comentarios, gracias.

Saludos

Roberto Vicencio – Para Tu Éxito con Oracle.

Director del Curso “Domina Tus Packages En Oracle

ndux98duehduxge67rtf