Ich habe einen View erzeugt (V9_LT_MN_TNZ_TA, Abkürzung: LMTT), der mir eine Tabelle aller Massnahmen mit bestimmten Grunddaten zu den MN (unter anderem der Teilnehmerzahl) erzeugt. Diese wird sortiert nach dem Jahr der MN, dem Leitthema, das der MN zugeordnet ist, der Organisationseinheit, die die MN durchführt, nach der Kategorie der MN und schließlich nach der MN-Nummer.
Dazu gibt es einen zweiten View (V9_LT_BUCHUNGENAUFW, Abkürzung: BA), der alle Buchungen (Ausgaben), die eine MN betreffen aufsummiert, um so die Gesmatkosten der MN zu erhalten.
Nun will ich einen dritten View erzeugen, der mir die Ausgaben pro Teilnehmer für ein Leitthema, eine Organisationseinheit und einer Kategorie berechnet = also nicht für die einzelne MN, sondern für verschiedene Gruppierungen.
Hier dieser dritter View:
CREATE OR REPLACE VIEW V9_LT_AusgEinnProTN AS SELECT LMTT.Teilnehmerzahl, LMTT.Massnahme, LMTT.Leitthema, LMTT.Jahr, LMTT.VerdAObj, LMTT.Kategorie, SUM(BA.BUCHUNGAUS) SAusg, SUM(LMTT.Teilnehmerzahl) STZ, CASE WHEN SUM(LMTT.Teilnehmerzahl)=0 THEN 0 ELSE (ROUND(SUM(BA.BUCHUNGAUS)/SUM(LMTT.Teilnehmerzahl),2)) END GAPTN, , GROUPING_ID (LMTT.Jahr,LMTT.Leitthema,LMTT.VerdAObj,LMTT.Kategorie,LMTT.Massnahme,LMTT.Teilnehmerzahl) groupid FROM V9_LT_MN_TNZ_TA LMTT LEFT OUTER JOIN V9_LT_BUCHUNGENAUFW BA ON (LMTT.Massnahme=BA.PRODUKT) AND (LMTT.Jahr=BA.GJ) GROUP BY CUBE (LMTT.Jahr,LMTT.Leitthema,LMTT.VerdAObj,LMTT.Kategorie,LMTT.Massnahme,LMTT.Teilnehmerzahl) ;
Nun erhalte ich folgende Fehlermeldung:
ORA-00936: Ausdruck fehlt
Die erscheint aber erst, seitdem ich den CASE Befehl hinzugefügt habe - den musste ich aber hinzufügen, da die Summe der Teilnehmer = 0 (z.B. wenn es sich bei den Massnahmen ausschließlich um Publikationen handelt) sein kann und eine Divison durch Null ja nun mal nicht geht.
Wenn ich Deine Anweisung richtig sehe, dann hat diese ein Komma zuviel: CREATE OR REPLACE VIEW V9_LT_AusgEinnProTN AS SELECT LMTT.Teilnehmerzahl, LMTT.Massnahme, LMTT.Leitthema, LMTT.Jahr, LMTT.VerdAObj, LMTT.Kategorie, SUM(BA.BUCHUNGAUS) SAusg, SUM(LMTT.Teilnehmerzahl) STZ, CASE WHEN SUM(LMTT.Teilnehmerzahl)=0 THEN 0 ELSE (ROUND(SUM(BA.BUCHUNGAUS)/SUM(LMTT.Teilnehmerzahl),2)) END GAPTN, , GROUPING_ID (LMTT.Jahr,LMTT.Leitthema,LMTT.VerdAObj,LMTT.Kategorie,LMTT.Massnahme,LMTT.Teilnehmerzahl) groupid FROM V9_LT_MN_TNZ_TA LMTT LEFT OUTER JOIN V9_LT_BUCHUNGENAUFW BA ON (LMTT.Massnahme=BA.PRODUKT) AND (LMTT.Jahr=BA.GJ) GROUP BY CUBE (LMTT.Jahr,LMTT.Leitthema,LMTT.VerdAObj,LMTT.Kategorie,LMTT.Massnahme,LMTT.Teilnehmerzahl) ; Zeile hervorgehoben. Zwischen den beiden Kommas wird ein Ausdruck oder eine Konstante erwartet.
och nööö. sorry ... ich habe mindestens zig mal drüber geschaut und es nicht gesehen. So was versuche ich natürlich zu vermeiden, dass ich das hier poste....
DANKE und Entschuldigung!