Hallo,

ich habe ein riesen Problem mit SQL auf der i5.

Ich habe eine Umsatzdatei, in der die Umsätze monatsweise - spaltenweise gespeichert sind (12 Spalten).
Jedes Jahr ist aber Zeilenweise gespeichert (Feld Jahr). Deshalb möchte ich mit folgender SQL-Anweisung die Umsätze eines Kunden von 2006 und 2005 in einem Datensatz zurückgemeldet bekommen (normalerweise wären das zwei Datensätze, einer für 2005 und einer für 2006)

Code:
SELECT 
a.Kunde, a.Artikel, a.Menge, a.Wert,
b.Kunde, b.Artikel, b.Menge, b.Wert
 
FROM UMSATZ as a
left join UMSATZ as b ON (a.Kunde = b.Kunde and a.Artikel = b.Artikel)
WHERE (a.Jahr='2006' and a.Kunde='Testkunde' and b.Jahr='2005' ) or
      (a.Jahr='2006' and a.Kunde='TestKunde' and b.Jahr is NULL)
 
order by a.Artikel
Durch den left Join dachte ich, ich bekommen alle Sätze von 2006 und wenns von 2005 auch Sätze für diese Artikel gibt, sind die Felder gefüllt, wenn 2005 keine da sind, sind die Felder leer.

Leider kommen immer nur die Datensätze, wo 2006 und 2005 Datensätze vorhanden sind. Genauer gesagt, wenn ich ohne left join, nur die Sätze von 2006 hole, sind´s 224, wenn ich die Sätze von 2005 hole, sind´s 222, mit Left join, alles in einem Datensatz sind auch nur 222. Ich will aber 224, und bei 2 Datensätze soll in b.Artikel,b.Kunde,b.Menge,b.Wert nichts drinstehen.
Kann mir einer weiterhelfen. Ich habe schon das Forum durchgewühlt (auch den Rest des Internets) aber ausser "IS NULL" nichts gefunden, aber das geht auch irgendwie nicht.

Danke im Voraus.

mfg A.Hingerl