Hallo,
Ich habe folgende Tabelle
CREATE TABLE COL_TABLE
(COL1 VARCHAR2(10),
COL2 VARCHAR2(10),
COL3 VARCHAR2(10),
COL4 NUMBER(4),
COL5 NUMBER(4));
mit folgenden Eintraegen:
COL1 COL2 COL3 COL4 COL5
AAA STA1 1 10 1
AAA STA1 1 11 60
AAA STA1 1 12 1
AAA STA1 2 19 50
AAA STA1 2 9 1
AAA STA2 1 9 1
AAA STA2 1 9 1
AAA STA2 3 9 40
AAA STA3 2 7 1
AAA STA3 2 17 1
AAA STA3 2 12 1
Als Ergebnis einer (oder mehrerer) SQL-Abfrage haette ich gerne:
COL1 COL2 TO_COL5 TOTAL
AAA STA1 1 3
AAA STA1 <>1 2
AAA STA2 1 2
AAA STA2 <>1 1
AAA STA3 1 3
Dies sieht einer Abfrage mit ROLLUP (ich benutze ORACLE) sehr aehnlich
SELECT COL1, COL2 ,COL5
,COUNT(*) "TOTAL"
FROM COL_TABLE
GROUP BY ROLLUP(COL1,COL2,COL5);
Ergebnis der ROLLUP-Abfrage:
COL1 COL2 COL5 TOT
AAA STA1 1 3
AAA STA1 50 1
AAA STA1 60 1
AAA STA1 5
AAA STA2 1 2
AAA STA2 40 1
AAA STA2 3
AAA STA3 1 3
AAA STA3 3
AAA 11
11
Aus der ROLLUP-ABfrage muessten noch die uebergeordneten Zeilen (ohne Eintraege in COL2 oder/und COL5) geloescht werden.
Desweiteren sollten die Eintrage in COL5 in zwei Gruppen eingeteilt werden:
Zu Gruppe eins gehoert eine Zeile wenn: COL5 = 1
Zu Gruppe zwei gehoert eine Zeile wenn: COL5 <>1
(Analog dazu waere zB: ein "normaler/guter" Programm-Exit ergibt eine 1, ein fehlerhafter Programm-Exit ergibt den Fehler-Code (eine Zahl ungleich eins);
Ich moechte im Prinzip nur wissen, wieviel "normale" Programm-Exits bezueglich COL1 und COL2 aufgetreten sind, und wieviel fehlerhafte..)
Der naechste Schritt waere eine Spalte mit der prozentualen Angabe zu den jeweiligen Programm-Exits, also sieht das Endergebnis so aus:
COL1 COL2 TO_COL5 TOTAL in_Prozent
AAA STA1 gut 3 60%
AAA STA1 schlecht 2 40%
AAA STA2 gut 2 66.66%
AAA STA2 schlecht 1 33.33%
AAA STA3 gut 3 100%
Gruss
Ich habe folgende Tabelle
CREATE TABLE COL_TABLE
(COL1 VARCHAR2(10),
COL2 VARCHAR2(10),
COL3 VARCHAR2(10),
COL4 NUMBER(4),
COL5 NUMBER(4));
mit folgenden Eintraegen:
COL1 COL2 COL3 COL4 COL5
AAA STA1 1 10 1
AAA STA1 1 11 60
AAA STA1 1 12 1
AAA STA1 2 19 50
AAA STA1 2 9 1
AAA STA2 1 9 1
AAA STA2 1 9 1
AAA STA2 3 9 40
AAA STA3 2 7 1
AAA STA3 2 17 1
AAA STA3 2 12 1
Als Ergebnis einer (oder mehrerer) SQL-Abfrage haette ich gerne:
COL1 COL2 TO_COL5 TOTAL
AAA STA1 1 3
AAA STA1 <>1 2
AAA STA2 1 2
AAA STA2 <>1 1
AAA STA3 1 3
Dies sieht einer Abfrage mit ROLLUP (ich benutze ORACLE) sehr aehnlich
SELECT COL1, COL2 ,COL5
,COUNT(*) "TOTAL"
FROM COL_TABLE
GROUP BY ROLLUP(COL1,COL2,COL5);
Ergebnis der ROLLUP-Abfrage:
COL1 COL2 COL5 TOT
AAA STA1 1 3
AAA STA1 50 1
AAA STA1 60 1
AAA STA1 5
AAA STA2 1 2
AAA STA2 40 1
AAA STA2 3
AAA STA3 1 3
AAA STA3 3
AAA 11
11
Aus der ROLLUP-ABfrage muessten noch die uebergeordneten Zeilen (ohne Eintraege in COL2 oder/und COL5) geloescht werden.
Desweiteren sollten die Eintrage in COL5 in zwei Gruppen eingeteilt werden:
Zu Gruppe eins gehoert eine Zeile wenn: COL5 = 1
Zu Gruppe zwei gehoert eine Zeile wenn: COL5 <>1
(Analog dazu waere zB: ein "normaler/guter" Programm-Exit ergibt eine 1, ein fehlerhafter Programm-Exit ergibt den Fehler-Code (eine Zahl ungleich eins);
Ich moechte im Prinzip nur wissen, wieviel "normale" Programm-Exits bezueglich COL1 und COL2 aufgetreten sind, und wieviel fehlerhafte..)
Der naechste Schritt waere eine Spalte mit der prozentualen Angabe zu den jeweiligen Programm-Exits, also sieht das Endergebnis so aus:
COL1 COL2 TO_COL5 TOTAL in_Prozent
AAA STA1 gut 3 60%
AAA STA1 schlecht 2 40%
AAA STA2 gut 2 66.66%
AAA STA2 schlecht 1 33.33%
AAA STA3 gut 3 100%
Gruss