Hallo Forum,

ich bekomme ein Probelm mittels embedded-SQL nicht so in den Griff, wie ich es mir vorstelle. Vielleicht hat jemand von Euch die zündende Idee.
Ich habe eine Datei, in der täglich die Umsätze von allen unseren Geschäftsbereichen und allen Abteilungen fortgeschrieben werden.

Ich möchte ein Serviceprogramm erstellen das anhand der übergebenen Parameter die Umsätze kumuliert und ausgibt.
Folgende Struktur wird als Übergabestruktur verwendet:

d SummDs ds
d SummFeld 6
d Datum d datfmt(*iso)
d GBereich 2 0
d Abteilung 2 0
d JahrMonTag 3


Der Inhalt des Feldes 'SummFeld' soll kumuliert werden. Sind GBereich und Abteilung gleich 0, soll der Umsatz der gesamten Firma ermittelt werden. Ist GBereich gefüllt und Abteilung = 0 soll nur der Umsatz dieses Geschäftsbereichs ermittelt werden.
Im Parameter JahrMonTag wird vorgegeben, ob nur für den Monat, nur für den Tag oder der Gesamtumsatz des Jahres bis zum übergebenen Monat ermittelt werden soll.

Momentan sieht mein SQL-Statement so aus:
c/EXEC SQL
c+ SELECT Sum(SUT010) into :M_Summe from SUT
c+ WHERE sut005 = :Abteilung and sut016 = :Jahr and
c+ sut008 <= :Monat - 1 or (sut005 = :Abteilung and
c+ sut016 = :Jahr and sut008 = :Monat and
c+ sut009 <= :Tag)
c/END-EXEC
Das hat aber den Nachteil, dass ich 18 verschiedene Statements codieren müsste. Kann ich im SQL-Statement nicht Variablen verwenden, die ich vorher fülle?

Ungefähr so:
c/EXEC SQL
c+ SELECT Sum(:SummFeld) into :M_Summe from SUT
c+ WHERE G_SqlStatement
c/END-EXEC
/free
Und im Feld G_SqlStatement steht dann die where-Bedingung

Vielen Dank.

Gruß
Alexander