Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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.

  • 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

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.