Hallo Martin,
Zitat von
mschaefer:
Wenn jetzt aber einen Monat kein Umsatz war, dann erscheint dieser Monat nicht in der Gruppe mit einer Nullzeile, sondern wird einfach ausgelassen. Kann man dieses der Abfrage abgewöhnen.
Wenn keine "Monate" da sind, können auch keine in der Ergebnismenge auftauchen.
Aber man kann sich ja welche "basteln".
SQL-Code:
CREATE PROCEDURE SP_JJMM (
VON_JJ INTEGER,
VON_MM INTEGER,
BIS_JJ INTEGER,
BIS_MM INTEGER)
RETURNS (
JAHR INTEGER,
MONAT INTEGER)
AS
begin
JAHR = VON_JJ;
MONAT = VON_MM;
WHILE (JAHR * 100 + MONAT <= BIS_JJ * 100 + BIS_MM) DO
BEGIN
suspend;
MONAT = MONAT +1;
if (MONAT > 12) THEN
BEGIN
MONAT = 1;
JAHR = JAHR +1;
END
END
end
Dann hat man im Ergebnis auch den Monat:
SQL-Code:
SELECT
JJMM.JAHR,
JJMM.MONAT,
COALESCE(SUM (U.BETRAG), 0) AS Monatsumsatz,
COUNT (U.ID) AS Umsatzanzahl
FROM
SP_JJMM(2005, 10, 2007, 5) JJMM
left outer join Umsatz U on (U.JAHR = JJMM.JAHR and U.MONAT = JJMM.MONAT)
GROUP BY
JJMM.JAHR,
JJMM.MONAT
alex