| 

.NET C# Java Javascript Exception

2
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.

Was mache ich falsch?

fast vergessen: ich arbeite unter Oracle 10g
06.03.2013
nicole.arntzen 37 4
Floyd 14,5k 3 9
2 Antworten
1
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.
06.03.2013
edvservice 390 4
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!
nicole.arntzen 06.03.2013
0
Fehler:
CASE 
WHEN SUM(LMTT.Teilnehmerzahl)=0 THEN 0
ELSE (ROUND(SUM(BA.BUCHUNGAUS)/SUM(LMTT.Teilnehmerzahl),2))
END GAPTN, ,--<-- zweites Komma zu viel
06.03.2013
Floyd 14,5k 3 9
Floyd 14,5k 3 9

Stelle deine Sql-Frage jetzt!