Abfrage kombinieren

FrenchSpirit

Aktiver Benutzer
Beiträge
41
Hallo in die Runde,

ich habe folgenden sehr einfachen Selekt:

SELECT

PE.BERATER
, COUNT(*) AS ANZAHL_EINWILLIGUNGEN

FROM EINWILL KDE

JOIN Z_PERSONEN PE
ON KDE.PERS_NR = PE.PERS_NR

WHERE

KDE.EWLG_ETS = '9999-12-31-23.59.59.999999'
AND KDE.EWLG_DATN_NTZG_DTM > '01.07.2017'

GROUP BY PE.BERATER
ORDER BY PE.BERATER


Soweit, so gut. Nun möchte ich in einer dritten Spalte im Select-Bereich die Gesamtanzahl der Kunden pro Berater ausgeben. Diese kann ich noch einfacher ermitteln:

SELECT
COUNT(*)AS ANZAHL_KUNDEN
FROM Z_PERSONEN PE1
GROUP BY PE1.BERATER


Wie bekomme ich die beiden Selekts so verknüpft, dass ich im Ergebnis drei Spalten bekomme?

Also z.B. so:

BERATER ++ ANZAHL_EINWILLIGUNGEN ++ ANZAHL_KUNDEN

4711 ++ 25 ++ 890
4612 ++ 3 ++ 500

usw....

Vielen Dank vorab und viele Grüße

Spirit
 
Werbung:
Hallo, akretschmer,

danke für die wieder total schnelle Antwort. Wie würde dieser zweite Join aussehen? und wie bekomme ich die Anzahl pro Berater in den SELECT-Bereich? Die WHERE-Bedingungen gelten ja nur für die Einträge in der Tabelle EINWILLIGUNG (verknüpft über die jeweils vorhandene KundenID). Bei der Anzahl der Kunden pro Berater habe ich die WHERE-Bedingung nicht und auch keine Verknüpfung mittels der KundenID (PERS_NR).

Ich stehe auf dem berühmten Schlauch....
 
Du brauchst natürlich ein Merkmal, wie Du den JOIN machst (die ON - Bedingung). Da ich Deine Tabellen nicht kenne, kann ich hier auch nicht weiter helfen. Das tut mir Leid.
 
Hallo Akretschmer,

im Prinzip habe ich 2 Tabellen

1. Tabelle Z_PERSONEN

hier sind ALLE Kunden drin. Pro Datensatz ein Kunde, für die Abfrage m.E. 2 relevante Felder

a) Z_PERSONEN.PERS_NR (KundenID des Kunden)
b) Z_PERSONEN.BERATER (Berater des Kunden)


2. Tabelle EINWILL

hier sind nur die Kunden drin, die eine Kundeneinwilligung gegeben haben. m.E. 3 relevante Felder:

a) EINWILL.PERS_NR (KundenID des Kunden, Verknüpfung zu der PERSONENTABELLE)
b) EINWILL.EWLG_DATN_NTZG_DTM (Datum der jeweiligen Kundeneinwilligung)
c) EINWILL.EWLG_ETS (Datum des Gültigkeitsendes der Einwilligung)


In Abfrage 1 bekomme ich gruppiert nach Berater die Anzahl der Kunden mit gültiger Einwilligung

In Abfrage 2 bekomme ich anhand der Tabelle Z_PERSONEN die Anzahl der Kunden gruppiert nach dem Feld Berater.

Helfen Dir diese Infos weiter?

Vielen vielen Dank vorab für Deine Mühen...

Gruß

Spirit
 
In Abfrage 1 bekomme ich gruppiert nach Berater die Anzahl der Kunden mit gültiger Einwilligung
Also Anzahl Kunden gruppiert nach Berater.

In Abfrage 2 bekomme ich anhand der Tabelle Z_PERSONEN die Anzahl der Kunden gruppiert nach dem Feld Berater.
Also Anzahl Kunden gruppiert nach Berater.

Klingt ähnlich.

Möglicherweise willst Du nach bestimmten Kriterien zählen. Das geht dann etwa so:

select ..., sum(case when ... then 1 else 0 end) as count1, sum(case when ... then 1 else 0 end) as count2

oder, wie ich finde schöner:

select ..., count(1) filter (where ...) as count1, count(1) filter (where ...) as count2


Das FILTER können aber nur sehr wenige Datenbanken.

Code:
test=*# select * from demo;
 id | wert
----+------
  1 |  1
  1 |  3
  1 |  5
  1 |  10
  1 |  4
  1 |  2
(6 Zeilen)
test=*# select id, count(1) filter (where wert <=5) as count_kleiner_gleich_5, count(1) filter (where wert > 5) as count_groeszer_5 from demo group by id;
 id | count_kleiner_gleich_5 | count_groeszer_5
----+------------------------+------------------
  1 |  5 |  1
(1 Zeile)
 
Werbung:
Hallo, akretschmer,

besten Dank für Deine Infos. Mit dem Befehl sum(case.....) hat es wunderbar geklappt. Ich habe in die beiden Zeilen im Select-Bereich jeweils die relevanten Bedingungen hinterlegt und die beiden Tabellen mit Leftjoin verbunden.

Schönes Wochenende,

Spirit
 
Zurück
Oben