Databases Reference
In-Depth Information
Schauen Sie sich die Ergebnisse genauer an, vor allem die Fälle mit NULL im Ergebnis. In
Bild 19.3 sehen Sie ein paar Beispiele.
Kunde
Bestellungen
Retoure
RQ_Bestellung
61690896
3
NULL
NULL
30565967
1
NULL
NULL
55401155
2
NULL
NULL
84981666
1
NULL
NULL
95399367
1
NULL
NULL
55633636
3
NULL
NULL
 Bild 19.3■
Ergebnisse mit NULL
24761926
2
NULL
NULL
Der Kunde, der keine Retouren hat, hat auch keine Retourenquote. Das ist aber nicht ganz
richtig. Die Retourenquote des Kunden ist nicht NULL , sondern 0,00 %.
Ändern Sie dies, indem Sie NULL in „0“ umwandeln. Das geschieht mit dem Befehl ISNULL ,
der immer dort eingesetzt wird, wo eine NULL möglich ist, also bei der Anzahl der Retouren.
isnull (Retoure, 0)
→ Ist die Anzahl der Retouren NULL , wird eine „0“ ausgegeben.
Bei der Retourenquoten-Berechnung muss ISNULL die gesamte Berechnung in der Klam-
mer umfassen.
ISNULL ((Berechnung),0)
Da das Ergebnis auch als zweistellige Dezimalzahl ausgegeben werden soll, sieht diese Zeile
wie folgt aus:
isnull (cast(cast(Retoure as numeric)/cast(Bestellungen as numeric)
*100 as DECIMAL(10,2)),0)
Der komplette Select sieht folgendermaßen aus:
Select ord.Kunde, Bestellungen, isnull (Retoure,0)Retoure,
isnull (cast(cast(Retoure as numeric)/cast(Bestellungen as numeric) *100 as
DECIMAL(10,2)),0)RQ_Bestellung
from
((SELECT c.riskID Kunde,COUNT (s.orderNo) Bestellungen
FROM [dbo].[iw_sales]s,[dbo].[iw_customer]c
where s.customerNo = c.customerNo
and s.[Type] = 2
group by c.riskID)as ord
FULL OUTER JOIN
(SELECT c.riskID Kunde, count (rh.orderNo) Retoure
FROM [dbo].[iw_return_header]rh,[dbo].[iw_return_line]rl,
[dbo].[iw_customer]c
where rh.customerNo = c.customerNo
and rh.returnNo = rl.returnNo
and rl.type = 2
group by c.riskID) as ret
on ord.Kunde = ret.Kunde)
Als Ergebnis werden bei den Fällen mit NULL nun folgende Daten ausgegeben (Bild 19.4).
Search WWH ::




Custom Search