Hallo,
ich habe da mal ein etwas kniffliges Problem. Ev. hat einer von Euch da eine tolle Idee oder Lösung.
Ich habe eine Tabelle mit Bruttowerten, Buchungsdatum, Kd-Nr und div. Informationen.
Nun will ich aus der Tabelle pro Kd-Nr. das letzte Buchungsdatum mit Bruttowert auslesen.
Aber auch die nächsten 11 Werte mit Buchungsdatum. Will heißen die Umsätze der letzen 12 Zahlungen.
Davon soll der AVG gebildet werden, sind es weniger als 12 Werte dann Entsprechend der Anzahl den AVG ermitteln.
Hier mal mein nicht grade schöner Ansatz:
[highlight=sql]
SELECT a.Kd-Nr,
a.Bruttowert,
a.Buchungsdatum,
add_months(max(a.Buchungsdatum), -1) AS Datum_2,
a......................
FROM p_abrechnung a,
tmp_p_abrechnung b
WHERE (a...... = 'Q01' a....... ^= '01'
AND a....... ^= 0.01
AND a........ ^= 'J')
AND ((a........ IN ('06',
'08',
'16',
'17')
AND a.......... = 'S'
AND a.......... = 'F')
OR a.......... IN ('SOLLZU',
'SOLLAB')
OR a........... = 'Z')
AND b.Buchungsdatum =
(SELECT add_months(max(a.Buchungsdatum), -1)
FROM p_Abrechnung)
GROUP BY a.Kd-Nr,
a.Bruttowert;
[/highlight]
Das ganz würde ich in eine Temp Schreiben lassen und mit 12 Läufen [ select add_months(max(a.abgerechnet_ab), -1,2,3,4,....) ] befüllen.
Danach ein select auf die Temp mit AVG Werten ja Kd-Nr.
Nur kommen bei diesem SQL keine Werte zurück. Liegt bestimmt an dem Buchungsdatum vergleich.
Gebe ich dem select eine feste Kd-Nr. mit läuft das ganze natürlich top.
Ich bin mir sicher es geht auch viel geschickter!!!
Nur fehlt mir grade die Nötige Idee dazu :-(
Ich bin mal auf Eure Ideen gespannt!!
Schon mal vielen Dank im Voraus
Wolfgang
ich habe da mal ein etwas kniffliges Problem. Ev. hat einer von Euch da eine tolle Idee oder Lösung.
Ich habe eine Tabelle mit Bruttowerten, Buchungsdatum, Kd-Nr und div. Informationen.
Nun will ich aus der Tabelle pro Kd-Nr. das letzte Buchungsdatum mit Bruttowert auslesen.
Aber auch die nächsten 11 Werte mit Buchungsdatum. Will heißen die Umsätze der letzen 12 Zahlungen.
Davon soll der AVG gebildet werden, sind es weniger als 12 Werte dann Entsprechend der Anzahl den AVG ermitteln.
Hier mal mein nicht grade schöner Ansatz:
[highlight=sql]
SELECT a.Kd-Nr,
a.Bruttowert,
a.Buchungsdatum,
add_months(max(a.Buchungsdatum), -1) AS Datum_2,
a......................
FROM p_abrechnung a,
tmp_p_abrechnung b
WHERE (a...... = 'Q01' a....... ^= '01'
AND a....... ^= 0.01
AND a........ ^= 'J')
AND ((a........ IN ('06',
'08',
'16',
'17')
AND a.......... = 'S'
AND a.......... = 'F')
OR a.......... IN ('SOLLZU',
'SOLLAB')
OR a........... = 'Z')
AND b.Buchungsdatum =
(SELECT add_months(max(a.Buchungsdatum), -1)
FROM p_Abrechnung)
GROUP BY a.Kd-Nr,
a.Bruttowert;
[/highlight]
Das ganz würde ich in eine Temp Schreiben lassen und mit 12 Läufen [ select add_months(max(a.abgerechnet_ab), -1,2,3,4,....) ] befüllen.
Danach ein select auf die Temp mit AVG Werten ja Kd-Nr.
Nur kommen bei diesem SQL keine Werte zurück. Liegt bestimmt an dem Buchungsdatum vergleich.
Gebe ich dem select eine feste Kd-Nr. mit läuft das ganze natürlich top.
Ich bin mir sicher es geht auch viel geschickter!!!
Nur fehlt mir grade die Nötige Idee dazu :-(
Ich bin mal auf Eure Ideen gespannt!!
Schon mal vielen Dank im Voraus
Wolfgang
Comment