Een pivot query in Oracle is ontworpen om de kolommen te zetten in rijen en vice versa . Het betekent het schakelen van de nadruk van de gegevens van een kolomvormige uitgang met een uitgang op basis van rijen , gewoonlijk een samenvatting van de gegevens zoals in het volgende voorbeeld , waarin de namen van steden en een groep mensen : Plaats Naam ----- ------------------ New York RaoNew York MillerNew York SmithNew York TailorCalifornia ZettingerCalifornia CarburosCalifornia DillonTexas RamirezTexas MartinTexas KingIn gedraaid query, kan de output worden : Naam van de stad ( en) ---- --------------------------- New York Rao , Molenaar , Smith , TailorCalifornia Zettinger , Carburos , DillonTexas Ramirez , Martin , Koning Instructions 1 Maak een test tafel en leg alle informatie in een tabel met de oorspronkelijke indeling als volgt op de " SQL > " prompt : CREATE TABLE staten ( statename VARCHAR2 ( 100 ) , achternaam VARCHAR2 ( 20 ) op ) /kopen van 2 heb gevonden Voer de gegevens in de nieuwe " staten " table , zodat het kan in pivot vorm worden gewonnen : INSERT INTO landen VALUES ( ' New York ' , ' Rao ' ) ; INSERT INTO landen VALUES ( ' New York ' , ' Miller ' ) ; INSERT INTO landen VALUES ( ' New York ' , ' Smith ' ) ; INSERT INTO landen VALUES ( ' New York ' , ' op maat ' ) ; INSERT INTO landen VALUES ( ' California ' , ' Zettinger ' ) ; INSERT INTO landen VALUES ( ' California ' , ' Carburos ' ) ; INSERT INTO landen VALUES ( ' California ' , ' Dillon ' ) ; INSERT INTO landen VALUES ( ' Texas' , ' Ramirez ' ) ; INSERT INTO landen VALUES ( ' Texas' , ' Martin ' ) ; INSERT INTO landen VALUES ( ' Texas' , ' King' ) ; 3 Selecteer alle gegevens van de nieuwe tabel om te zien hoe het eruit ziet op dit moment : Selecteer * van staten ; het moet vergelijkbaar uitgang weer te geven aan het volgende : Naam van de stad ----------------- ------ New York Rao New York Miller New York Smith New York Tailor Californië Zettinger California Carburos Californië Dillon Texas Ramirez Texas Martin Texas King 4 pivot de query met behulp van de volgende techniek : . SELECT a.statename , - Controleer het rijnummer voor elke naam en gebruik de resulterende naam 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 ( DECODE ( ar , 10 , ' , ' | | a.surname ) ) namen FROM ( SELECT states.statename , states.surname , ROW_NUMBER ( ) op - PARTITION DOOR MIDDEL VAN DE GROEP VAN DE RESULTATEN PER STATENAME , in tegenstelling tot < br > - GROUPING DE RESULTATEN INDIVIDUEEL ... OVER ( Partitie states.statename ORDER BY NULL ) r FROM staten ) een GROUP BY a.statename ORDER BY a.statename / Dit kan complex lijken op het eerste , maar het idee is dat elke staat en de naam wordt geïdentificeerd en gegroepeerd in enkele lijnen ( de ' | | ' ) in de gegroepeerde naam eash toestand in een rij . Het resultaat is een draaibare zoekopdracht.
|