Difficulty: Moderate

Eine Matrix ist ein Raster-Darstellung von Daten. Es hat eine Reihe von Etiketten, eine Spalte von Etiketten und in einer Tabelle die Daten in Bezug auf die Zeile und Spalte. Matrix-Berichte sind auch Berichte von Kreuztabellen.

Eine Matrix Bericht einer Gruppe von Daten für die Zeilen, einer Gruppe von Daten für die Spalten, eine Gruppe von Kreuz-Produkt-und eine Gruppe von Daten, wie der Wert für die Cross-Produkt. Die Cross-Produkt-Gruppe steht für alle möglichen Kombinationen von Zeilen und Spalten Gruppen.

Werfen wir einen Blick auf ein Beispiel. Angenommen, Sie haben eine Tabelle namens Inv_summary. Es hat drei Spalten: Inv_date, Inv_status und Inv_value. Nun, Sie wollen einen Bericht zeigt, dass der Gesamtwert öffnen und schließen Rechnungen für jeden Monat, zum Beispiel wie unten.

MONAT OPEN CLOSE

-------- ------------ ------------

Jan-07 20 19

Feb-07 0 153

März-07 18 56

Apr-07 43 0

Mai-07 93 0

Jun-07 79 0

Jul-07 112 0

Hier sind die Schritte, um den Bericht.

  1. Erstellen Sie eine Tabelle Inv_summary.
  2. CREATE TABLE Inv_summary (Inv_date Datum, Inv_status VARCHAR2 (1), Inv_value Zahl);

  3. Legen Sie einige Daten in Inv_summary Tisch.
  4. Legen Sie in Inv_summary Werte ('01-Jan-07 ',' O ', 20,00);
    Legen Sie in Inv_summary Werte ('01-Jan-07 ',' C ', 12.00 Uhr);
    Legen Sie in Inv_summary Werte ('10-Jan-07 ',' C ', 7.00);
    Legen Sie in Inv_summary Werte ('05-Feb-07 ',' C ', 153,00);
    Legen Sie in Inv_summary Werte ('12-MAR-07 ',' C ', 48,00);
    Legen Sie in Inv_summary Werte ('15-MAR-07 ',' C ', 8.00);
    Legen Sie in Inv_summary Werte ('23-MAR-07 ',' O ', 18.00 Uhr);
    Legen Sie in Inv_summary Werte ('20-Apr-07 ',' O ', 43,00);
    Legen Sie in Inv_summary Werte ('01-Mai-07 ',' O ', 61,00);
    Legen Sie in Inv_summary Werte ('01-Mai-07 ',' O ', 32.00);
    Legen Sie in Inv_summary Werte ('01-Jun-07 ',' O ', 18.00 Uhr);
    Legen Sie in Inv_summary Werte ('01-Jun-07 ',' O ', 33,00);
    Legen Sie in Inv_summary Werte ('01-Jun-07 ',' O ', 28,00);
    Legen Sie in Inv_summary Werte ('01-Juli-07 ',' O ', 20,00);
    Legen Sie in Inv_summary Werte ('01-Juli-07 ',' O ', 24,00);
    Legen Sie in Inv_summary Werte ('01-Juli-07 ',' O ', 68,00);
    COMMIT;

  5. Führen Sie die folgenden SQL-Befehl, um den Bericht.
  6. SELECT TO_CHAR (to_date (TO_CHAR (inv_date, 'Mo-yy'), 'Mo-yy'), 'Mo-yy ") Monat,
    sum (decode (inv_status, 'O', inv_value, 0)) öffnen,
    sum (decode (inv_status, 'C', inv_value, 0)) schliessen
    AUS Inv_summary
    GROUP BY to_date (TO_CHAR (inv_date, 'Mo-yy'), 'Mo-jj)
    ORDER BY to_date (TO_CHAR (inv_date, 'Mo-yy'), 'Mo-jj)

    MONAT OPEN CLOSE

    --------- ------------ ------------

    Jan-07 20 19

    Feb-07 0 153

    März-07 18 56

    Apr-07 43 0

    Mai-07 93 0

    Jun-07 79 0

    Jul-07 112 0

    In dem obigen Beispiel, haben wir es so, dass die invoice_status Gruppe und führt über den Monat Gruppe geht, bildet ein Raster, das zeigt, Gesamtwert der Rechnungen. Der wichtigste Teil in der oben genannten SQL-Befehl ist DECODE Funktion. Er wandelt Zeilen in Spalten, indem Sie den Wert der Spalte Inv_status. Sie können eine Matrix Bericht mit Einzel-oder mehrere Anfragen. Eine einzige Abfrage Bericht ist in der Regel effizienter als ein Vielfaches Abfrage.

Average rating: