Uma consulta pivô no Oracle é projetado para converter colunas para linhas e vice- versa. Isso significa que a mudança da ênfase dos dados a partir de uma saída colunar para uma saída, com base em linhas , geralmente um resumo dos dados como pode ser visto no exemplo a seguir , mostrando as cidades e nomes de um conjunto de pessoas Cidade : Nome ----- ------------------ New York RaoNew Iorque MillerNew Iorque SmithNew Iorque TailorCalifornia ZettingerCalifornia CarburosCalifornia DillonTexas RamirezTexas MartinTexas Kingin girou consulta , a saída poderia ser: Nome da Cidade (s) ---- --------------------------- New York Rao, Miller, Smith, TailorCalifornia Zettinger , Carburos , DillonTexas Ramirez, Martin, Instruções king of
1
Criar uma tabela de teste e colocar todas as informações em uma tabela contendo o formato original da seguinte maneira no "SQL > " prompt:
criar estados de mesa (
StateName VARCHAR2 ( 100),
sobrenome VARCHAR2 ( 20)
)
/
2
Insira os dados para a nova tabela " estados " , de modo que pode ser extraído de forma pivô :
INSERT INTO estados VALUES (' New York ', ' Rao ' ) ;
INSERT INTO estados VALUES (' New York ', ' Miller ');
INSERT INTO estados VALUES (' New York ',' Smith ' ) ;
INSERT INTO estados VALUES (' New York ' , ' sob medida ' ) ;
INSERT INTO estados VALUES (' Califórnia ', ' Zettinger ' ) ;
INSERT INTO estados VALUES (' Califórnia ', ' Carburos ' ) ;
INSERT INTO estados VALUES (' Califórnia ' , " Dillon ');
INSERT INTO estados VALUES (' Texas ',' Ramirez ' ) ;
INSERT INTO estados VALUES (' Texas ',' Martin ' ) ;
INSERT INTO estados VALUES (' Texas ', ' king' ) ;
3
Selecione todos os dados da nova tabela para ver como ele olha para presente :
Selecione * dos estados;
Ele deve exibir uma saída semelhante à seguinte :
Nome da Cidade
----------------- ------
New York Rao
New York Miller
New York Smith
New York Tailor
Califórnia Zettinger
Califórnia Carburos
Califórnia Dillon
Texas Ramirez
Texas Martin
Texas king
4
gire a consulta usando a seguinte técnica :
Selecione a.statename ,
- Verifique o número da linha para cada nome e usar o nome resultante
MAX ( DECODE . (ar , 1, a.surname ) )