Oracle: hvordan man deler værdier i kolonner

Indlæg af Dan Dejligbjerg     opdateret: 2011-11-10

Nogle gange er det fordelagtigt at oprette kolonner ud af en flere værdier i en Oracle database felt . Se dataværdier som kolonne , i modsætning til rækker , giver mulighed for forskellig data manipulationer og præsentationer. Et eksempel kan være at udføre en matematisk operation på en liste fra et felt , men præsenteres som et resultat under en anden værdi, som repræsenterer en kategori for den pågældende værdi . Dette kan opfattes som svarende til et gitter eller på tværs af fanen diagram
1
Se hvad data tilgængelige via en forespørgsel . Ex : SELECT * FROM TABEL

Resultatet af ovenstående forespørgsel kan give følgende tre kolonner med viste værdier .

kategoriobjektet PRIS $
------ A ----------- 1 --- ----- 5
------ A ----------- 2 ------- 10
------ B ----------- 2 ------- 10
------ B ----------3 ------- 15
------ C ----------- 3 ------- 15

------ C ----------- 4 ------- 20
2 .
Omskriv forespørgslen for at oprette kolonner til KATEGORI værdier .

SELECT
DECODE ( kategori " A ", punkt , null ) CATEGORYA ,
DECODE ( kategori , 'B ' , PUNKT , null ) CATEGORYB ,
DECODE ( kategori " B ", punkt , null ) CATEGORYC
Af Tabel

Bemærk : Denne forespørgsel viser , hvordan en række værdier kan blive kolonner

Resultat af Query
CATEGORYA CATEGORYB CATEGORYC
------- 1
------- 2
---------- ------------------- 2
---------------------- ------- 3
---------------------------------- ------------------ 3
----------------------- ----------------------------- 4

Selvom kategori været opdelt i unikke kolonner , skal du gøre datarækker ikke sammenbrud . Seks rækker af data ( se Trin 1 resultat ) stadig indtager seks rækker af produktionen
3
Omskriv forespørgslen for at finde den maksimale pris pr kategori kolonner : .

SELECT
MAX ( AFKODE (kategori , 'A ' , $ PRIS , null ) ) CATEGORYA ,
MAX ( AFKODE ( kategori " B ' , $ PRIS , null ) ) CATEGORYB ,
MAX ( AFKODE (kategori , "C" , $ PRIS , null ) ) CATEGORYC
Af Tabel


Bemærk :
Denne forespørgsel viser nu en følge række data ( den maksimale pris ) for hver kategori .
Dette kan verificeres i forhold til eksempel data i Trin 1 .
-for CategoryA , 10 er maksimum af værdier 5 og 10 .
-for CategoryB , 15 er maksimum af værdier 10 og 15 .
-for CategoryC , 20 er maksimum af værdier 15 og 20 .

Resultat af Query :
CATEGORYA CATEGORYB CATEGORYC
--------- 10----------------- 15 ---------- ----- 20

gode råd og advarsler


  • MAX er en Oracle aggregatfunktion , der finder den maksimale værdi af en liste over værdier , hvad enten alfanumeriske , numeriske eller data .
  • DECODE er en Oracle funktion, der konverterer feltværdier som en nyligt navngivet kolonne .


  • Previous:hvordan du redigerer en dbx fil Next:hvordan man åbner en postsættet



     

    Kommentarer

    Code:
    change