Databases Reference
In-Depth Information
bis zu 6 Monaten
bis zu 9 Monaten
bis zu 12 Monaten
über 12 Monate
Unsere CASE WHEN -Anweisung sieht dann vereinfacht wie folgt aus.
CASE WHEN Monate = 0 then 0
WHEN Monate between 0.01 and 3 then 3
WHEN Monate between 3.01 and 6 then 6
WHEN Monate between 6.01 and 9 then 9
WHEN Monate between 9.01 and 12 then 12
WHEN Monate > 12 then 13
END
Bei dieser Variante müssen wir hinten einen numerischen Wert ausgeben. Ein varchar -
Wert, wie z. B. „unter 3 Monate“ ist nicht möglich.
Zur Berechnung der Monate benutzen wir folgende Formel.
cast ((cast(DATEDIFF ( day ,ld.first_order ,ld.last_order )as numeric)
/ 30.42)as DECIMAL(10,2))
Wenn wir diese Formel in den Select einfügen, sieht dieser folgendermaßen aus.
Select ld.Kunde,
case when cast ((cast(DATEDIFF (day ,ld.first_order , ld.last_order)as
numeric)/ 30.42)as DECIMAL(10,2))= 0 then 0
when cast ((cast(DATEDIFF ( day ,ld.first_order ,ld.last_order )as numeric)/
30.42)as DECIMAL(10,2))between 0.01 and 3 then 3
when cast ((cast(DATEDIFF ( day ,ld.first_order ,ld.last_order )as numeric)/
30.42)as DECIMAL(10,2))between 3.01 and 6 then 6
when cast ((cast(DATEDIFF ( day ,ld.first_order ,ld.last_order )as numeric)/
30.42)as DECIMAL(10,2))between 6.01 and 9 then 9
when cast ((cast(DATEDIFF ( day ,ld.first_order ,ld.last_order )as numeric)/
30.42)as DECIMAL(10,2))between 9.01 and 12 then 12
when cast ((cast(DATEDIFF ( day ,ld.first_order ,ld.last_order )as numeric)/
30.42)as DECIMAL(10,2))> 12 then 13 End as Monate
from
(SELECT c.riskID Kunde,
Min(postingDate) first_order, max(postingDate)last_order
FROM [dbo].[iw_sales]s,[dbo].[iw_customer]c
where s.customerNo = c.customerNo
group by c.riskID)ld
Darüber legen wir dann wieder die Auswertung nach Monaten, die wir bei Variante a) ken-
nengelernt haben.
Select ldm.Monate, count (*) Anzahl
From
(Unterabfrage B (Unterabfrage A)) ldm
group by ldm.Monate
order by ldm.Monate
Wie das Ganze dann komplett ausschaut, sehen Sie in Bild 14.7.
 
Search WWH ::




Custom Search