Databases Reference
In-Depth Information
Diesen Select fügen Sie als weitere Unterabfrage in die vorherige Abfrage der Bestelldaten
ein. Allerdings muss die Berechnung nach Monaten vorerst aus den Bestelldaten herausge-
nommen werden.
Der gültige Select für die Bestelldaten sieht jetzt wie folgt aus.
Select a.IRID, a.Datum, a.Bestellung, a.Artikelmenge, a.Gesamtsumme
from
(SELECT c.riskID IRID,s.postingDate Datum,s.orderNo Bestellung,
cast (sum (s.quantity)as DECIMAL(10,0))Artikelmenge,
cast (sum (s.amount)as DECIMAL(10,2))Gesamtsumme
from [dbo].[iw_sales]s,[dbo].[iw_customer]c
where s.customerNo = c.customerNo
and s.type = 2
group by c.riskID,s.postingDate,s.orderNo)a,
(SELECT c.riskID IRID, min (s.postingDate) Erstbestellung
FROM [dbo].[iw_sales]s,[dbo].[iw_customer]c
where s.customerNo = c.customerNo
and s.type = 2
group by c.riskID)b
where a.IRID = b.IRID
and a.Datum = b.Erstbestellung
Wenn Sie beide Abfragen mit einem normalen JOIN verbinden würden, bekämen Sie nur
die Daten von Kunden geliefert, die auch Retouren haben. Wir wollen aber alle Neukunden
ausweisen, also auch diejenigen, die nichts retourniert haben. Dazu benötigen wir einen
OUTER JOIN für die Verbindung der Unterabfragen. Es gibt drei Varianten des OUTER JOINS
(siehe Abschnitt 8.1, „Retourendaten und Retouren-Kopfdaten: Zwei Tabellen miteinander
verbinden“).
In diesem Fall ist die Variante LEFT OUTER JOIN richtig. Wenn man beide Tabellen, die man
mit einem OUTER JOIN verbinden möchte, nebeneinander stellt, steht die erste Tabelle
links. In unserem Fall enthält die erste Tabelle mehr Informationen als die zweite. Wenn es
also NULL -Einträge im Ergebnis gibt, stammen sie aus der zweiten Tabelle.
SELECT * FROM TABELLE_A a
LEFT OUTER JOIN TABELLE_B b
ON a.SPALTEN_NAME = b_SPALTEN_NAME
 Bild 11.7■
Let Outer Join
Das Prinzip ist in Bild 11.7 dargestellt. Anstelle der Tabelle A setzen wir den Select für die
Bestelldaten, Tabelle B steht für die Retourendaten. Bei einem LEFT OUTER JOIN werden
nun sämtliche Bestelldaten sowie die vorhandenen Daten aus den Retouren verwendet. Sind
zu einzelnen Bestellungen keine Retouren vorhanden, werden NULL -Werte zurückgegeben.
 
Search WWH ::




Custom Search