ORACLE DECODIEREN mit mehreren Ausdrücken oder mehrere dekodiert

Habe ich die unter Daten in einer Oracle-Tabelle, die ich versuche zum durchführen von Berechnungen basierend auf der ART & QT Spalten.

TYPE QT STATUS  CNT
---- -- ------  ---
E    A  YES     123
E    A  NO     2540
E    D  YES       2
E    D  NO      787
O    A  YES     884
O    A  NO     6957
O    D  YES      25
O    D  NO     1360

Sieht aus wie meine erwartete Ausgabe ist jetzt anders.. wie unten :

TYPE    TOTAL   A   A&Y
----    -----   ----    -----
E+O     12678   10504   1007
E       3452     2663    123

Meinem alten oracle-sql ist unten, aber die Ausgabe ist falsch, bei der Berechnung der Prozentsätze:

SELECT * FROM (
    SELECT NVL(SUM(DECODE(A.QT,'A',A.CNT,'D',A.CNT)),0) AS "TOTAL",
    NVL(SUM(DECODE(A.QT,'A',A.CNT)),0) AS "A ALL",
    NVL(SUM(DECODE(A.QT,'A',ROUND(100*(NVL(A.CNT,0)/A.CNT),2))),0) "A ALL %",
    NVL(SUM(DECODE(A.STATUS,'E',A.CNT)),0) AS "E TOTAL",
    NVL(SUM(DECODE(A.STATUS,'E',DECODE(A.QT,'A',A.CNT))),0) AS "E & A TOTAL"",
    NVL(SUM(DECODE(A.STATUS,'E',ROUND(100 * SUM((DECODE(A.QT,'A',A.CNT)) /SUM(A.CNT)),3))),0) "E & A %"
    FROM ALLIN A)
InformationsquelleAutor Tinman | 2014-10-21
Schreibe einen Kommentar