Databases Reference
In-Depth Information
■
25.2■Zahlarten in der Retourentabelle
Nun wollen wir eine neue virtuelle Retourentabelle erzeugen, in der wir die Zahlarten mit
einbauen. Die Zahlart wird unten an die Unterabfrage
ret
(Retouren) angefügt.
Select ord.Bestellung, ord.Artikel,
isnull (ret.Artikelretouren,0)Artikelretouren, ret.Zahlart
→
Zahlart hinzugefügt
from
(SELECT s.orderNo Bestellung,
cast (sum (s.quantity)as DECIMAL(10,0))Artikel
from [dbo].[iw_sales]s
where s.type = 2
and s.quantity > 0
and s.orderDate between '01.04.2011' and '30.06.2011'
group by s.orderNo)ord
Left OUTER JOIN
(SELECT rh.orderNo Bestellung, cr.reason Zahlart,
→
hier die Zahlart ausgeben
cast(sum( rl.quantity)as DECIMAL(10,0)) Artikelretouren
FROM [dbo].[iw_sales]s,[dbo].[iw_return_line]rl,
[dbo].[iw_return_header]rh,[dbo].[iw_codeReason]cr
→
Tabelle codeReason für Zahlart
where s.type = 2
and s.orderNo = rh.orderNo
and rh.returnNo = rl.returnNo
and s.IWAN = rl.IWAN
and rl.type = 2
and rh.paymentCode = cr.Code →
Join return_header mit codeReason
and cr.Type = 'payment' →
der richtige Type
group by rh.orderNo, cr.reason)as ret
on ord.Bestellung = ret.Bestellung
Wenn Sie diesen Select laufen lassen, bekommen Sie in der Spalte Zahlart sehr viele Zeilen
mit
NULL
angezeigt. Das sind alles Bestellungen ohne Retouren. Da die Zahlart nur bei den
Retouren erfasst ist, können wir gleich die Fälle herausnehmen, bei denen nicht retourniert
wurde. Setzen Sie dazu die
where
-Bedingung
where ret.Artikelretouren > 0
und fügen Sie diese einfach unten als letzte Zeile an:
Select ord.Bestellung, ord.Artikel,
isnull (ret.Artikelretouren,0)Artikelretouren, ret.Zahlart
from
(SELECT s.orderNo Bestellung,
cast (sum (s.quantity)as DECIMAL(10,0))Artikel
from [dbo].[iw_sales]s
where s.type = 2
and s.quantity > 0
and s.orderDate between '01.04.2011' and '30.06.2011'
group by s.orderNo)ord
Left OUTER JOIN
(SELECT rh.orderNo Bestellung, cr.reason Zahlart,