Anzahl unterschidlicher Datensätze

Hallo,

ich habe eine Tabelle „Rechnungsausgangsbuch“ und möchte nun die Anzahl der aktiven Kunden in einem bestimmten Monat.

Mein SQL-Statement sieht so aus:

SELECT COUNT (*)
FROM rga
WHERE rga.jahr = &jahr AND
rga.monat = &monat
GROUP BY rga.kundenkonto ;

Kann mir jemand sagen, wie ich das Statement verändern muss, damit ich nicht für jedes Kundenkonto die Anzahl der Rechnungen bekomme (das bringt diese Abfrage nämlich) sondern die Anzahl unterschiedlicher Kundennummern?

DANKE

ANDI :smile:

Hi Andi,

wenn Du wissen möchtest, wie viele aktive Kunden = Kundenkonten pro Monat vorhanden sind, schreibst Du

SELECT distinct COUNT (rga.kundenkonto)
 FROM rga
WHERE rga.jahr = &jahr
AND rga.monat= &monat
;

Das „group by“ ist hier nicht angebracht.

Gruß Ralf

Hallo,

danke für die schnelle Antwort, aber irgendwie will das bei mir nicht wirklich.

Mit der modifizierten Abfrage erhalte ich die Anzahl der geschrieben Rechungen, aber nicht die der aktiven Kunden, da ja für den einen oder anderen Kunde mehrere REs pro Monat geschrieben werden.
Irgendwie funktionert das „distinct“ bei mir nicht.
Ich hab’ Oracle 8.1.7.2.0/SQL-Plus 3.3.4.0.0
Muss ich da vielleicht noch was einstellen, damit das „distinct“ funzt ?

DANKE & Grüße

ANDI :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ach ja, noch was:

Gerade hab’ ich das COUNT weggelassen, da hat der DISTINCT funktioniert. Er bringt mir nur jede Kundennummer einmal.
Sobald ich aber wieder COUNTe ist’s wieder die Anzahl der Rechnungen.

Sehr seltsam das…

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Andi,

Das liegt m.E. daran, dass man

select count(distinct rga.rga.kundenkonto)

schreiben muss.

Grüße
Clemens

[…]

SELECT distinct COUNT (rga.kundenkonto)
FROM rga
WHERE rga.jahr = &jahr
AND rga.monat= &monat
;

Hi Andi,

es ist guter Brauch und macht das Antworten leichter, bei solchen Problemen den Tabellenaufbau zu zeigen.

Das Geheimnis liegt in

aktive Kunden = Kundenkonten pro Monat

  • hiernach hatte ich das Fragezeichen vergessen. In der ersten Anfrage sprichst Du vom Kunden, als Column taucht nur das Kundenkonto auf, und inzwischen gibt’s sogar geschriebene Rechnungen. Hat ein Kunde denn mehrere Konten? Wenn ja, dann suche die Kundennummern (oder wie immer Du den Kunden benannt hast) zusammen und zähle sie:

    SELECT Count (*)
    from (SELECT distinct (rga.kunden_ID)
    FROM rga
    WHERE rga.jahr = &jahr
    AND rga.monat= &monat)

„Distinct“ heißt, dass Duplikate aus der Ergebnismenge entfernt werden. Im inneren Select werden für den vorgegebenen Zeitraum die unterschiedlichen Kunden zusammengesucht, der äußere Select zählt dann die Treffer.

Gruß Ralf

Wenn ich das richtig verstanden habe, willst Du folgende Auflistung haben:

Kundenkonto Anzahlrechnungen
Peter Müller 13
Mike Maier 4
Elma Peters 0

Sollte dies der Fall sein könnte die Abfrage so aussehn:

SELECT rga.kundenkonto
,NVL(COUNT(1),0)
FROM rga
WHERE rga.jahr = &jahr
AND rga.monat= &monat
GROUP BY rga.kundenkonto

gruß
Andreas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

danke an alle, die mir geholfen haben. Es funktioniert im Grunde jede Eurer Lösungen.

Jetzt kann ich’s mir aussuchen.

DANKE, DANKE, DANKE

ANDI :smile: