Tecnología

Inicio

Cómo pivotar una consulta en Oracle

Cómo pivotar una consulta en Oracle


Una consulta de pivote en Oracle está diseñado para convertir columnas a filas y viceversa. Significa cambiar el énfasis de los datos a partir de una salida columnar a una salida basada en filas, por lo general un resumen de los datos como se ve en el siguiente ejemplo, que muestra las ciudades y los nombres de un conjunto de personas:

Nombre de la ciudad


New York Rao

New York Miller

New York Smith

Nueva York Sastre

California Zettinger

Carburos de California

California Dillon

Tejas Ramírez

Tejas Martin

Tejas rey

En consulta pivotado, la salida podría ser:

Nombre (s) de la ciudad


Nueva York Rao, Miller, Smith, Sastre

California Zettinger, Carburos, Dillon

Tejas Ramírez, Martín, el rey

Instrucciones

1 Crear una tabla de prueba y poner toda la información en una tabla que contiene el formato original de la siguiente manera en el "SQL>" del sistema:

Create table (

statename VARCHAR2 (100),

VARCHAR2 apellido (20)

)

/

2 Insertar los datos en la nueva tabla "estados", de manera que se pueda extraer en forma de pivote:

INSERT INTO establece VALUES ( 'Nueva York', 'Rao');

INSERT INTO establece VALUES ( 'Nueva York', 'Miller');

INSERT INTO establece VALUES ( 'Nueva York', 'Smith');

INSERT INTO establece VALUES ( 'Nueva York', 'Sastre');

INSERT INTO establece VALUES ( 'California', 'Zettinger');

INSERT INTO establece VALUES ( 'California', 'Carburos');

INSERT INTO establece VALUES ( 'California', 'Dillon');

INSERT INTO Unidos valora ( 'Tejas', 'Ramírez');

INSERT INTO establece VALUES ( 'Tejas', 'Martin');

INSERT INTO establece VALUES ( 'Tejas', 'King');

3 Seleccionar todos los datos de la nueva tabla para ver cómo se ve en la actualidad:

Seleccionar * de los estados;

Debe mostrar una salida similar a la siguiente:

Nombre de la ciudad



New York Rao

New York Miller

New York Smith

Nueva York Sastre

California Zettinger

Carburos de California

California Dillon

Tejas Ramírez

Tejas Martin

Tejas rey

4 Pivote la consulta utilizando la siguiente técnica:

a.statename SELECT,

- Comprobar el número de fila para cada nombre y usar el nombre resultante.

MAX(DECODE(ar, 1,a.surname)) ||

MAX (DECODE (ar, 2, ',' || a.surname)) ||

MAX (DECODE (ar, 3, ',' || a.surname)) ||

MAX (DECODE (ar, 4, ',' || a.surname)) ||

MAX (DECODE (ar, 5, ',' || a.surname)) ||

MAX (DECODE (ar, 6 ',' || a.surname)) ||

MAX (DECODE (ar, 7 ',' || a.surname)) ||

MAX (DECODE (ar, 8 ',' || a.surname)) ||

MAX (DECODE (ar, 9 ',' || a.surname)) ||

MAX (recepción (ar, 10, ',' a.surname) || nombres)

FROM (SELECT states.statename,

states.surname,

NUMERO DE FILA()

- De tabiques mediante agrupar a los resultados por Statename, a diferencia de

- Agrupándose los resultados de forma ...

OVER (PARTITION BY states.statename

ORDER BY NULL) r

De los Estados de) una

GRUPO POR a.statename

ORDER BY a.statename

/

Esto puede parecer complejo al principio, pero la idea es que se identifica cada estado y el nombre y agrupados en líneas individuales (con la '||') en el nombre agrupados para el estado eash en una fila. El resultado es una consulta pivotada.

Consejos y advertencias

  • Algunos índices llevará a cabo escaneos completos de tabla causando un rendimiento lento, a menos que una cláusula de "donde" se utiliza en las instrucciones de selección. Vale la pena conocer cómo funcionan los índices y el uso de "explicar los planes" para ver lo que el optimizador está haciendo en la práctica.