Einzelnen Beitrag anzeigen

GroHae

Registriert seit: 19. Apr 2007
Ort: Nabburg
83 Beiträge
 
Delphi 2007 Enterprise
 
#1

SQL: FULL OUTER JOIN mit sich selbst

  Alt 6. Mär 2009, 08:31
Datenbank: MSSQL 2000 • Zugriff über: ODBC
Hallo zusammen,

ich will eine Auswertung auf eine Tabelle machen.
Umsatz pro Debitor
Dabei sollen die Daten aus dem Jahr 2009 mit dem Jahr 2008 verglichen werden.
Wenn Debitoren in dem einen Jahr nicht sind sollen sie trotzdem nicht unterschlagen werden.

Das Ergebnis soll also so aussehen:

  • Debitor --- Umsatz_2008 ---- Umsatz_2009
    A --------- NULL --------- 1000
    B --------- 2500 --------- 2500
    C --------- 1500 --------- NULL
    D --------- 2000 --------- 140

SQL-Code:
  SELECT SUM(AktuellesJahr.Umsatz) AS Summe_Umsatz,
  SUM(Vorjahr.Umsatz) AS Summe_Umsatz_Vorjahr,
  AktuellesJahr.Debitor_ID
FROM dbo.DBRechnung Vorjahr FULL OUTER JOIN dbo.DBRechnung AktuellesJahr ON
      Vorjahr.UnternehmenNr_ID = AktuellesJahr.UnternehmenNr_ID AND
      Vorjahr.Monat_ID = AktuellesJahr.Monat_ID AND
      Vorjahr.Debitor_ID = AktuellesJahr.Debitor_ID AND
      Vorjahr.Artikel_ID = AktuellesJahr.Artikel_ID
WHERE
  (AktuellesJahr.Jahr_ID = 2009) AND (AktuellesJahr.Monat_ID = 1) AND (AktuellesJahr.UnternehmenNr_ID = 3) AND
  (Vorjahr.Jahr_ID = 2008) AND (Vorjahr.Monat_ID = 1) AND (Vorjahr.UnternehmenNr_ID = 3)
GROUP BY AktuellesJahr.Debitor_ID
Es klappt aber nicht:
a) ich bekomme nur die einen Teil der Daten (nur die welche in beiden Jahren sind)
b) Die Summen sind falsch

Etwa so:

  • Debitor --- Umsatz_2008 ---- Umsatz_2009
    B --------- 150 --------- 300
    D --------- 981 --------- 25

Ich komme einfach nicht drauf was ich falsch mache
Grüße

Thomas
  Mit Zitat antworten Zitat