Às vezes é vantajoso criar colunas de um de vários valores em um campo de banco de dados Oracle. Vendo os valores dados como coluna , em oposição a linhas , permite diferentes formas de manipulação de dados e apresentações . Um exemplo pode ser o de realizar uma operação matemática de uma lista de um campo , mas apresenta-se como um resultado sob um outro valor que representa uma categoria para esse valor . Isso pode ser visto como o equivalente a uma grade ou gráfico cross- tab . Instruções
1
Veja o que os dados estão disponíveis através de uma consulta. Ex : SELECT * FROM TABELA
O resultado da consulta acima pode produzir as três colunas seguintes com valores mostrados
CATEGORIA ITEM PREÇO $
------ . A
----------- 1 -------- 5
------ A ----------- 2 --- ---- 10
------ B ----------- 2 ------- 10
------ B ----------- 3 ------- 15
------ C ----------- 3 ---- --- 15
------ C ----------- 4 ------- 20
2
Reescreva a consulta para criar colunas para valores categoria.
SELECIONE
DECODE
(categoria ' a', ITEM , null ) CATEGORYA ,
DECODE (categoria, 'B' , ITEM , null) CATEGORYB ,
DECODE (categoria, 'B' , ITEM , null ) CategoryC
DE TABELA
Nota: Esta consulta mostra como um valores de linha podem se tornar colunas
Resultado da consulta
CATEGORYA CATEGORYB CategoryC
------- 1
------- 2
----------------------------- 2
------------- ---------------- 3
--------------------------- ------------------------- 3
------------------ ---------------------------------- 4
apesar categoria foi dividida em colunas exclusivas , as linhas de dados não entrar em colapso. Seis linhas de dados ( ver o resultado Passo 1 ) ainda ocupam seis fileiras de saída
3
Reescreva a consulta para encontrar o preço máximo por categoria colunas : .
SELECT < br >
MAX ( DECODE (categoria ' A', $ PRICE, null) ) CATEGORYA ,
MAX ( DECODE (categoria, 'B ', $ PRICE, null) ) CATEGORYB ,
MAX ( DECODE ( CATEGORIA , 'C ', $ PRICE, null) ) CategoryC
dE TABELA
Nota:
Esta consulta mostra agora uma linha de dados , resultando ( o preço máximo) por Categoria
Isso pode ser verificado em relação aos dados de exemplo em Passo 1
- . . para CategoryA , 10 é o máximo de valores de 5 e 10
. - para CategoryB , 15 é o máximo de valores de 10 e 15
- para CategoryC , 20 é o máximo de valores de 15 e 20
Resultado da consulta: .
CATEGORYA CATEGORYB . CategoryC
--------- 10 ---------- ------- 15 ---------- ----- 20