Manchmal ist es vorteilhaft , um Spalten zu erstellen aus einer mehrere Werte in einer Oracle-Datenbank ein. Seeing die Daten als Werte Spalte wie Zeilen Gegensatz ermöglicht unterschiedliche Daten Manipulationen und Präsentationen. Ein Beispiel kann eine mathematische Operation auf einer Liste von einem Feld durchzuführen , sondern präsentiert als Ergebnis unter einem anderen Wert, der eine Kategorie für diesen Wert. Dies kann als das Äquivalent von einem Gitter oder Kreuztabellendiagramm gedacht werden . Anleitung
1
sehen, welche Daten zur Verfügung über eine Abfrage ist . Ex : SELECT * FROM TABLE
Das Ergebnis der Abfrage kann über die folgenden drei Spalten mit Werten gezeigt ergeben
KATEGORIE ITEM PRICE $
------ . A ----------- 1 -------- 5
------ A ----------- 2 --- ---- 10
------ B ----------- 2 ------- 10
------ B ----------- 3 ------- 15
------ C ----------- 3 ---- --- 15
------ C ----------- 4 ------- 20
2
Schreiben Sie die Abfrage Spalten für KATEGORIE Werte zu schaffen .
SELECT
DECODE (Kategorie " A ", Punkt , null) CATEGORYA ,
DECODE (Kategorie , 'B' , ITEM , null) CATEGORYB ,
DECODE (Kategorie " B ", Punkt , null) CATEGORYC
FROM TABLE
Hinweis: Diese Abfrage zeigt, wie eine Zeile Werte können Spalten werden
Ergebnis von Query
CATEGORYA CATEGORYB CATEGORYC
------- 1 ------- 2
< p > ----------------------------- 2
------------- ---------------- 3
--------------------------- ------------------------- 3
------------------ ---------------------------------- 4
obwohl KATEGORIE in eindeutige Spalten aufgeteilt wurde müssen die Datenreihen nicht zusammenbrechen . Sechs Reihen von Daten (siehe Schritt 1 Ergebnis) noch zu besetzen sechs Reihen Ausgang
3
Schreiben Sie die Abfrage , um den maximalen Preis pro Kategorie Spalten finden : .
SELECT < br >
MAX (Entschlüsseln (Kategorie , 'A' , $ PREIS , null) ) CATEGORYA ,
MAX (Entschlüsseln (Kategorie , 'B' , $ PREIS , null) ) CATEGORYB ,
< p> MAX (Entschlüsseln (Kategorie , 'C' , $ PREIS , null) ) CATEGORYC
FROM TABLE
Hinweis:
Diese Abfrage zeigt nun eine resultierende Datenzeile . (die maximale Preis ) pro Kategorie
Dies kann beispielsweise gegen die Daten in Schritt 1 überprüft werden
- . für CategoryA ist maximal 10 Werte 5 und 10
. - für CategoryB , ist maximal 15 Werte 10 und 15
- für CategoryC ist maximal 20 Werte 15 und 20
Ergebnis Query: .
CATEGORYA CATEGORYB . CATEGORYC
--------- 10 ---------- ------- 15 ---------- ----- 20