O2e

Hur koda en matris rapport i SQL

En matris rapport är en gallerliknande representation av data

En matris rapport är en gallerliknande representation av data. Den har en rad av etiketter, en kolonn av etiketter och, i ett rutnät, data relaterade till både rad och kolumn. Matrix rapporter kallas också korstabulerade rapporter.

En matris rapport har en grupp av data för rader, en grupp av data för kolumner, en grupp av data över produkt och en grupp av data som värde för gränsöverskridande produkt. Den gränsöverskridande produktgruppen representerar alla möjliga kombinationer av rad-och kolumngrupper.

Låt oss ta en titt på ett exempel

Låt oss ta en titt på ett exempel. Antag att du har en tabell som heter Inv_summary. Den har tre kolumner: Inv_date, Inv_status och Inv_value. Nu vill du skapa en rapport som visar totala värdet av öppna och stänga fakturor för varje månad, till exempel som nedan.

MÅNAD OPEN CLOSE

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

Jan-07 20 19

Hur koda en matris rapport i SQL. Skapa en tabell inv_summary.
Hur koda en matris rapport i SQL. Skapa en tabell inv_summary.

Februari-07 0 153

Mar-07 18 56

April-07 43 0

En matris rapport är en gallerliknande representation av data. Sätt några data till inv_summary tabell.
En matris rapport är en gallerliknande representation av data. Sätt några data till inv_summary tabell.

May-07 93 0

Juni-07 79 0

Juli-07 112 0

Här är stegen för att generera rapporten.

  1. Skapa en tabell inv_summary.
  2. Skapa tabell Inv_summary (Inv_date datum, Inv_status varchar2 (1), Inv_value nummer);

  3. Sätt några data till inv_summary tabell.
  4. Sätt in Inv_summary värden ('01-januari-07 "," O ", 20,00);
    Sätt in Inv_summary värden ('01-januari-07 "," C ", 12,00);
    Sätt in Inv_summary värden ('10-januari-07 "," C ", 7,00);
    Sätt in Inv_summary värden ('05-februari-07 "," C ", 153,00);
    Sätt in Inv_summary värden ('12-mar-07 "," C ", 48,00);
    Sätt in Inv_summary värden ('15-mar-07 "," C ", 8,00);
    Sätt in Inv_summary värden ('23-mar-07 "," O ", 18,00);
    Sätt in Inv_summary värden ('20-april-07 "," O ", 43,00);
    Sätt in Inv_summary värden ('01-maj-07 "," O ", 61,00);
    Sätt in Inv_summary värden ('01-maj-07 "," O ", 32,00);
    Sätt in Inv_summary värden ('01-juni-07 "," O ", 18,00);
    Sätt in Inv_summary värden ('01-juni-07 "," O ", 33,00);
    Sätt in Inv_summary värden ('01-juni-07 "," O ", 28,00);
    Sätt in Inv_summary värden ('01-juli-07 "," O ", 20,00);
    Sätt in Inv_summary värden ('01-juli-07 "," O ", 24,00);
    Sätt in Inv_summary värden ('01-juli-07 "," O ", 68,00);
    Commit;

  5. Kör följande SQL-kommando för att generera rapporten.
  6. VÄLJ to_char (to_date (to_char (inv_date "må-yy"), "må-yy"), "må-yy") Månad,
    summa (decode (inv_status, "O", inv_value, 0)) Öppna,
    summa (decode (inv_status, "C", inv_value, 0)) Stäng
    FRÅN Inv_summary
    GROUP BY to_date (to_char (inv_date "må-yy"), "må-yy")
    ORDER BY to_date (to_char (inv_date "må-yy"), "må-yy")

    MÅNAD OPEN CLOSE

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

    Jan-07 20 19

    Februari-07 0 153

    Mar-07 18 56

    April-07 43 0

    May-07 93 0

    Juni-07 79 0

    Juli-07 112 0

    I exemplet ovan har vi satt upp så att invoice_status gruppen går över och månaden gruppen går ner och bildar ett rutnät som visar totala värdet av fakturor. Den viktigaste delen i ovan SQL-kommando är DECODE funktion. Den konverterar rader i kolumner genom att kontrollera värdet på Inv_status kolumnen. Du kan skriva en matris rapport med en eller flera frågor. En enda sökfrågerapport är generellt mer effektiv än en multipel fråga.