Veröffentlicht 21. November 201311 j 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.
21. November 201311 j 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
22. November 201311 j Autor 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
22. November 201311 j 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 ...
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.