von heinz_ketchup » Sa, 26.01.2008 16:14
Hallo,
ich brauche wieder mal eure Hilfe, bei einem Problem:
Ich habe in einer Istdaten-Tabelle folgende Buchhaltungsdaten:
Konto-Nr, Kostenstellen-Nr, Kontenbezeichnung, Buchungswert, Buchungsmonat, Buchungsjahr (PS: die Kontenbezeichnung hole ich aus einer Konten-Tabelle)
Nun möchte ich die Istdaten pro Konto und Kostenstelle und Jahr auf den Jahreswert (Summe p.a.) verdichten. (Das ist ja nicht schwer)
Die so verdichteten Datensätze möchte ich nun in eine Plandaten-Tabelle schreiben und 12-teln, so dass ich aus dem
einen verdichteten Datensatz
12 Datensätze mit gleiche Inhalten, aber
unterschiedlichen Monaten (1 bis 12) in meiner Plandaten-Tabelle stehen habe.
Da ich das ganze flexibel benötige, also die Anzahl der Monate variieren (12, 18, 24, 36 ... Monate) können muss, möchte ich das mit einer While-Schleife in einer Prozedur lösen. Die Anzahl der Monate möchte ich später aus einer Steuerungstabelle holen.
Hier mein Ansatz für die Prozedur:
Code: Alles auswählen
Set @monat = 0
While @monat < 13 Do
Insert Into plandaten ( pd_ktonr, pd_kstnr, pd_beschreibung, pd_wert, pd_monat, pd_jahr)
SELECT istdaten.id_ktonr,
istdaten.id_kst_ksth,
konten.kto_bezeichnung,
SUM(istdaten.id_wert)/12,
@monat,
istdaten.id_jahr
FROM istdaten, konten where istdaten.id_ktonr = kto_nr
GROUP BY istdaten.id_ktonr, istdaten.id_kst_ksth
Set @monat = @monat + 1
End While;
So, soweit bin ich schon. Jetzt mault immer mein GUI-Tool Navicat, wenn ich die Prozedur speichern möchte mit Sytaxerror near Zeile @monat. Ich habe auch schon die Variablendeklaration von @monat mit := probiert. Das passt ihm auch nicht.
Vielleicht sieht ja ein geübteres SQL-Auge meinen Anfängerfehler sofort. Schon jetzt danke für eure Hilfe!
Viele Grüße
Werner
Hallo,
ich brauche wieder mal eure Hilfe, bei einem Problem:
Ich habe in einer Istdaten-Tabelle folgende Buchhaltungsdaten:
Konto-Nr, Kostenstellen-Nr, Kontenbezeichnung, Buchungswert, Buchungsmonat, Buchungsjahr (PS: die Kontenbezeichnung hole ich aus einer Konten-Tabelle)
Nun möchte ich die Istdaten pro Konto und Kostenstelle und Jahr auf den Jahreswert (Summe p.a.) verdichten. (Das ist ja nicht schwer)
Die so verdichteten Datensätze möchte ich nun in eine Plandaten-Tabelle schreiben und 12-teln, so dass ich aus dem [u]einen[/u] verdichteten Datensatz [u]12 Datensätze[/u] mit gleiche Inhalten, aber [u]unterschiedlichen[/u] Monaten (1 bis 12) in meiner Plandaten-Tabelle stehen habe.
Da ich das ganze flexibel benötige, also die Anzahl der Monate variieren (12, 18, 24, 36 ... Monate) können muss, möchte ich das mit einer While-Schleife in einer Prozedur lösen. Die Anzahl der Monate möchte ich später aus einer Steuerungstabelle holen.
Hier mein Ansatz für die Prozedur:
[code]Set @monat = 0
While @monat < 13 Do
Insert Into plandaten ( pd_ktonr, pd_kstnr, pd_beschreibung, pd_wert, pd_monat, pd_jahr)
SELECT istdaten.id_ktonr,
istdaten.id_kst_ksth,
konten.kto_bezeichnung,
SUM(istdaten.id_wert)/12,
@monat,
istdaten.id_jahr
FROM istdaten, konten where istdaten.id_ktonr = kto_nr
GROUP BY istdaten.id_ktonr, istdaten.id_kst_ksth
Set @monat = @monat + 1
End While;[/code]
So, soweit bin ich schon. Jetzt mault immer mein GUI-Tool Navicat, wenn ich die Prozedur speichern möchte mit Sytaxerror near Zeile @monat. Ich habe auch schon die Variablendeklaration von @monat mit := probiert. Das passt ihm auch nicht.
Vielleicht sieht ja ein geübteres SQL-Auge meinen Anfängerfehler sofort. Schon jetzt danke für eure Hilfe!
Viele Grüße
Werner