Einzelnen Beitrag anzeigen

alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#17

Re: Problem mit stored Procedure und group by

  Alt 30. Aug 2005, 07:54
wenn du je Artikel aus der Tabelle ART nur eine Gesamtmenge
benötigst, hattest du eigentlich bereits die Lösung mit deiner SP.
Für die Summe über alles (das SELECT darf dann nur Aggregat-Funktionen beinhalten) wird keine GROUP BY benötigt. Ohne GROUP BY wird auch immer nur ein Datensatz in der Ergebnismenge zurückgegeben.
Damit wird FOR..DO.. überflüssig.
Es fehlte nur der richtige Aufruf der SP.

Hier nochmal die SP für die Gesamtmengen (ich habe MONATSMENGE in GESMENGE umbenannt)
SQL-Code:
CREATE PROCEDURE TESTSP_GES (
    VONMONAT INTEGER,
    BISMONAT INTEGER,
    ID_ART INTEGER)
RETURNS (
    GESMENGE INTEGER)
AS
begin
    SELECT
      SUM(MENGE)
    FROM
      KSTAT
    WHERE
      (ID_ART = :ID_ART) AND (MONAT >= :VONMONAT) AND (MONAT <= :BISMONAT)
    INTO
      :GESMENGE;
    IF (GESMENGE is NULL) THEN GESMENGE = 0;
    suspend;
end
und der Aufruf
SQL-Code:
select A.NR, A.BEZ, T.GESMENGE
from art A
left join TESTSP_GES(:VonMonat,:BisMonat, A.ID) T on (1=1)
das Ganze könne man aber auch damit erreichen
SQL-Code:
SELECT A.NR, A.BEZ, COALESCE(SUM(K.MENGE),0)
from
  ART A
  left join KSTAT K on (K.ID_ART=A.ID)
GROUP BY
  1, 2
wichtig ist nur, daß in GROUP BY alle Nicht-Aggregat-Felder enthalten sind.

alex
Alexander
  Mit Zitat antworten Zitat