Prost Neujahr,
habe hier folgende Stored Procedure :
Code:
CREATE PROCEDURE NEW_PROCEDURE
returns (
artnr integer,
jahrout integer,
mon01 decimal(15,2))
as
begin
FOR SELECT
NR AS ARTNR,
JAHR,
SUM (CASE MONAT WHEN 1 Then
UMSATZ
ELSE
0
END) as Mon01
FROM STAT S RIGHT JOIN ART A ON S.ID_ART=A.ID WHERE (JAHR = 2011 OR
JAHR=2012) AND
(ID_KUNDE=0) AND (A.ID=2871839) GROUP BY ARTNR,JAHR
INTO :ARTNR,:JAHROUT,:MON01 do
suspend;
end
Pro Artikel brauche ich 2 Zeilen (für Statistik, hier eine für 2011 und 2012). Die sind auch meistens da. Allerdings nur dann, wenn zu einem Artikel tatsächlich ein Statistik-Datensatz existiert. Ist keiner da, dann ist nur 1 Zeile zu sehen. Es heisst aber auch so :
"RIGHT JOIN: Return all rows from the right table, even if there are no matches in the left table"
Wo ist da jetzt der Denkfehler ? Es sollen immer 2 Zeilen in der Datenmenge sein, selbst wenn zu den entsprechenden Artikeln keine Statistik-Daten existieren.