A veces es ventajoso para crear columnas de múltiples valores en un campo de una base de datos Oracle . Al ver los valores de los datos como la columna , en lugar de filas , permite diferentes manipulaciones y presentaciones de datos . Un ejemplo puede ser para llevar a cabo una operación matemática en una lista de un campo , pero se presenta como un resultado bajo otro valor que representa una categoría para ese valor . Esto puede ser pensado como el equivalente de una rejilla o de referencias cruzadas gráfico. Instrucciones
1
Vea qué datos están disponibles a través de una consulta. Ejemplo: SELECT * FROM TABLA
El resultado de la consulta anterior puede producir los siguientes tres columnas con los valores mostrados
CATEGORÍA ARTÍCULO PRECIO $
------ . A ----------- 1 -------- 5
------ A ----------- 2 --- ---- 10
------ B ----------- 2 ------- 10
------ B ----------- 3 ------- 15
------ C ----------- 3 ---- --- 15
------ C ----------- 4 ------- 20
2
Vuelva a escribir la consulta para crear columnas para los valores de categoría.
SELECCIONAR
DECODE (categoría, ' a', ITEM, null) CATEGORYA ,
DECODE (categoría, 'B ' , artículo, null) CATEGORYB ,
DECODE (categoría, 'B ' , ITEM, null) CategoryC
DE MESA
Nota : Esta consulta muestra cómo uno valora filas pueden llegar a ser las columnas
Resultado de la consulta
CATEGORYA CATEGORYB CategoryC
------- 1 ------- 2
< p > ----------------------------- 2
------------- ---------------- 3
--------------------------- ------------------------- 3
------------------ ---------------------------------- 4
aunque CATEGORÍA ha dividido en columnas únicas , las filas de datos no se colapsan . Seis filas de datos (véase el Paso 1 resultado) siguen ocupando seis filas de salida
3
Vuelva a escribir la consulta para encontrar el precio máximo por columnas categoría : .
SELECT < br >
MAX ( DECODE (categoría, ' A', $ PRICE , null) ) CATEGORYA ,
MAX ( DECODE (categoría, 'B ', $ PRICE, null) ) CATEGORYB ,
< p> MAX ( DECODE (categoría, 'C ', $ PRICE, null) ) CategoryC
dE MESA
Nota :
Esta consulta muestra ahora una fila de datos resultante . ( el precio máximo ) por categoría
Esto se puede comprobar con los datos de ejemplo en el paso 1
- . para CategoryA , 10 es el máximo de los valores de 5 y 10
. - para CategoryB , 15 es el máximo de los valores de 10 y 15
- para CategoryC , 20 es el máximo de los valores de 15 y 20
Resultado de la consulta: .
CATEGORYA CATEGORYB . CategoryC
--------- 10 ---------- ------- 15 ---------- ----- 20