Cr4m0 Geschrieben 21. November 2013 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Hans Geschrieben 21. November 2013 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 22. November 2013 Teilen Geschrieben 22. November 2013 welche Datenbank? Left Join würde vielleicht schon helfen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Cr4m0 Geschrieben 22. November 2013 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Hans Geschrieben 22. November 2013 Teilen 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 ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.