Cr4m0 Geschrieben 21. November 2013 Geschrieben 21. November 2013 Hi, folgendes Problem: ich habe drei Tabellen die ich über die Kundennummer Joine. Soweit so gut. So sieht meine Abfrage aus: SELECT DISTINCT cml.uniquecustomerid, FROM dwh.cust_mailing_list cml, dwh.sales s, dwh.cust_prod_notify cpn WHERE cml.customerid = s.customerid AND cml.customerid = cpn.customerid AND s.productid = '1' AND s.siteid = '2'; nun würde ich gern meiner abfrage eine neue spalte hinzufügen die abhängig von werten aus der Tabelle dwh.cust_prod_notify ist. In der cust_prod_notify gibt es eine spalte die Werte von 0 bis 3 enhält. Nun möchte ich das in der neuen spalte für jeden Kunden eine neue Bezeichnung für diese Werte zwischen 0-3. Wenn 0 dann A, wenn 1 dann B, wenn 2 dann C und wenn 3 dann D. Wie baue ich das in meine Abfrage? Vielen Dank.
Der Hans Geschrieben 21. November 2013 Geschrieben 21. November 2013 Sollte eigentlich nach einem solchen Schema funktionieren: CASE cpn.spaltenname WHEN 0 THEN 'A' WHEN 1 THEN 'B' WHEN 2 THEN 'C' WHEN 3 THEN 'D' END AS spaltenbezeichnung
Der Kleine Geschrieben 22. November 2013 Geschrieben 22. November 2013 welche Datenbank? Left Join würde vielleicht schon helfen.
Cr4m0 Geschrieben 22. November 2013 Autor Geschrieben 22. November 2013 Hi, dank deiner Hilfe habe ich nun folgendes Statement gebastelt: SELECTDISTINCT c.customerid, c.reg_dayid AS Reg_day, ( CASE WHEN cpn.jackpot_alert > 0 and cml.standard_newsletter > 0 THEN 'C' WHEN cpn.jackpot_alert = 0 and cml.standard_newsletter > 0 THEN 'B' WHEN cml.standard_newsletter = 0 and cpn.jackpot_alert > 0 THEN 'A' ELSE''END ) AS Flag 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' ORDERBY 1; Das Ergebnis ist eine Tabelle mit allen CustomerId's die jeweils in Gruppen A, B oder C aufgeteilt wurden. Wie kann ich diese denn nun zählen? Ich möchte also wissen wieviele Customer in Gruppe A, b sowie C sind. Vielen Dank
Der Hans Geschrieben 22. November 2013 Geschrieben 22. November 2013 So solltest du die Aufteilung auf die verschiedenen Kategorien bekommen, allerdings als zusätzliche Abfrage und nicht in die erste integriert: SELECT DISTINCT CASE WHEN cpn.jackpot_alert > 0 and cml.standard_newsletter > 0 THEN 'C' WHEN cpn.jackpot_alert = 0 and cml.standard_newsletter > 0 THEN 'B' WHEN cml.standard_newsletter = 0 and cpn.jackpot_alert > 0 THEN 'A' ELSE '' END AS Flag ,CASE WHEN cpn.jackpot_alert > 0 and cml.standard_newsletter > 0 THEN (SELECT COUNT(*) FROM ... WHERE cpn.jackpot_alert > 0 AND cml.standard_newsletter > 0) WHEN cpn.jackpot_alert = 0 and cml.standard_newsletter > 0 THEN (SELECT COUNT(*) FROM ... WHERE cpn.jackpot_alert = 0 and cml.standard_newsletter > 0) WHEN cml.standard_newsletter = 0 and cpn.jackpot_alert > 0 THEN (SELECT COUNT(*) FROM ... WHERE cml.standard_newsletter = 0 and cpn.jackpot_alert > 0) ELSE (SELECT COUNT(*) FROM ... WHERE [I]!= CASE 1-3[/I]) END AS Anzahl FROM ...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden