ukulele
Datenbank-Guru
- Beiträge
- 5.250
Ja mit left(spalte,6) nimmst du einfach von der Zeichenkette die hier das Datum darstellt Jahr und Monat und gruppierst danach.
Um alles in das von dir gewünschte Format zu kriegen müsstest du aus deiner einen CASE Schleife mehrere machen:
Ich verliere allerdings etwas den Faden weil ich keinen Schimmer habe ob die Anzahl noch passt, kenne jetzt deine Daten nicht so gut wie du
Aber so kann es funktionieren.
Um alles in das von dir gewünschte Format zu kriegen müsstest du aus deiner einen CASE Schleife mehrere machen:
Code:
SELECT t.Reg_day,
sum(t.FlagA) AS 'A',
sum(t.FlagB) AS 'B',
sum(t.FlagC) AS 'C',
count(t.customerid) AS Anzahl
FROM (
SELECT DISTINCT
c.customerid,
left(c.reg_dayid,6) AS Reg_day,
( CASE
WHEN cml.standard_newsletter = 0 and cpn.jackpot_alert > 0 THEN 1
ELSE 0 END ) AS FlagA,
( CASE
WHEN cpn.jackpot_alert = 0 and cml.standard_newsletter > 0 THEN 1
ELSE 0 END ) AS FlagB,
( CASE
WHEN cpn.jackpot_alert > 0 and cml.standard_newsletter > 0 THEN 1
ELSE 0 END ) AS FlagC
FROM dwh.cust_mailing_list cml,
dwh.sales s,
dwh.cust_prod_notify cpn,
dwh.customer c
WHERE cml.customerid = s.customerid
AND cml.customerid = cpn.customerid
AND cml.customerid = c.customerid
AND cpn.productid = '1'
AND s.productid = '1'
AND s.siteid = '2'
AND s.paid = '1'
AND s.cancelled = '0'
AND s.purchasedayid >= '20121201'
AND c.reg_dayid >= '20121201'
) t
GROUP BY t.Reg_day
ORDER BY 1;
![Wink ;) ;)](/styles/default/xenforo/smilies/wink.png)