Ibland är det fördelaktigt att skapa kolumner ur en flera värden i en Oracle -databas fält . Att se datavärden som kolumn , i motsats till rader , tillåter olika data manipulationer och presentationer. Ett exempel kan vara att utföra en matematisk operation på en lista från ett fält , men presenteras som ett resultat under en annan värde som motsvarar en kategori för det aktuella värdet . Detta kan ses som motsvarigheten till ett galler eller cross-fliken diagram
1
Se vilka data som ska tillgänglig via en fråga . Ex : SELECT * FROM tabell
Resultatet av ovanstående fråga kan ge följande tre kolumner med visas värden .
KATEGORI artikel Pris $
—— A ———– 1 — —– 5
—— A ———– 2 ——- 10
—— B ———– 2 ——- 10
—— B ———-3 ——- 15
—— C ———– 3 ——- 15
—— C ———– 4 ——- 20
2 .
Rewrite frågan för att skapa kolumner för kategori värden .
SELECT
DECODE (kategori , ” A ” , punkt , null ) CATEGORYA ,
DECODE (kategori , ” B ” , punkt , null ) CATEGORYB ,
DECODE (kategori , ” B ” , punkt , null ) CATEGORYC
FRÅN tabell
OBS: Denna fråga visar hur en rad värden kan bli kolumner
Resultat av Sökning
CATEGORYA CATEGORYB CATEGORYC
——- 1
——- 2
———- ——————- 2
———————- ——- 3
———————————- —————— 3
———————– —————————– 4
Även kategorin delats upp i unika kolumner , göra kollaps dataraderna inte . Sex rader med data ( se Steg 1 träff ) upptar fortfarande sex rader av produktionen
3
Rewrite frågan för att hitta det högsta priset per kategori kolumner : .
VÄLJ
MAX ( DECODE (kategori , ”A ” , $ PRIS , null ) ) CATEGORYA ,
MAX ( DECODE (kategori , ” B ” , $ PRIS , null ) ) CATEGORYB ,
MAX ( DECODE (kategori , ”C ” , $ PRIS , null ) ) CATEGORYC
FRÅN tabell
Obs :
Denna fråga visar nu en följd rad med data ( det högsta pris ) per kategori .
Detta kan verifieras mot exemplet data i Steg 1 .
-för CategoryA , 10 är max värdena 5 och 10 .
-för CategoryB , 15 är högst värden 10 och 15.
-för CategoryC , 20 är högst värden 15 och 20 .
resultat Fråga:
CATEGORYA CATEGORYB CATEGORYC
——— 10—————– 15 ———- —– 20
tips och varningar
コメント