SQL Statment - Neukunden ermittlen
Hallo zusammen,
ich habe bei unserem Datenbank das Problem, dass ich gerne Neukunden ermittelt hätte, aber nicht nach Anlagedatum des Kunden, sondern nach Erstauftrag bzw Erstangebot.
Hier mal vereinfacht die beiden Tabellen Struktur.
Kunden: Kundennummer / Kundenname
Angebote: Angebotid / Kundennummer / Bezeichnung / Angebotsdatum
Kunden.Kundennummer = Angebote.Kundennummer (1:N Verbindung)
Nun möchte ich z.B. alle Kunden bekommen, die im Monat Oktober zum ersten Mal (also könnte auch 5 Anfragen sein) eine Anfrage bekommen haben, aber davor noch nie!
Probleme macht mir die Möglichkeit, dass der Kunde im Monat Oktober auch mehr als nur eine Anfrage bekommen haben könnte...
Mein Statment bis jetzt:
So, jetzt zählt er alle Angebote im Oktober und als Nebenabfrage alle Angebote in dem kompletten Stamm, und überall wo es nur 1 Angebot gezählt wurde, ist es ein Neukunde bzw. ein Kunde der im Monat Oktober zum ersten Mal eine Anfrage bekommen hat. Aber wenn der Kunde mehrere Angebote im Oktober bekommen hat, wird er nicht angezeigt.
Wie kann ich das Problem lösen?
Danke
Gruß
ottscho
ich habe bei unserem Datenbank das Problem, dass ich gerne Neukunden ermittelt hätte, aber nicht nach Anlagedatum des Kunden, sondern nach Erstauftrag bzw Erstangebot.
Hier mal vereinfacht die beiden Tabellen Struktur.
Kunden: Kundennummer / Kundenname
Angebote: Angebotid / Kundennummer / Bezeichnung / Angebotsdatum
Kunden.Kundennummer = Angebote.Kundennummer (1:N Verbindung)
Nun möchte ich z.B. alle Kunden bekommen, die im Monat Oktober zum ersten Mal (also könnte auch 5 Anfragen sein) eine Anfrage bekommen haben, aber davor noch nie!
Probleme macht mir die Möglichkeit, dass der Kunde im Monat Oktober auch mehr als nur eine Anfrage bekommen haben könnte...
Mein Statment bis jetzt:
SELECT newOffer0.Kundennummer
FROM Aufträge as newOffer0
WHERE (
SELECT COUNT(*) as Anzahl
FROM (SELECT newOffer1.* FROM Aufträge WHERE statecode = 0) as newOffer1
WHERE newOffer0.Kundennummer = newOffer1.Kundennummer]
GROUP BY newOffer1.Kundennummer]
) = 1
AND Angebotsdatum between '2009-10-01' and '2009-10-31'
So, jetzt zählt er alle Angebote im Oktober und als Nebenabfrage alle Angebote in dem kompletten Stamm, und überall wo es nur 1 Angebot gezählt wurde, ist es ein Neukunde bzw. ein Kunde der im Monat Oktober zum ersten Mal eine Anfrage bekommen hat. Aber wenn der Kunde mehrere Angebote im Oktober bekommen hat, wird er nicht angezeigt.
Wie kann ich das Problem lösen?
Danke
Gruß
ottscho
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 129687
Url: https://administrator.de/forum/sql-statment-neukunden-ermittlen-129687.html
Ausgedruckt am: 06.04.2025 um 03:04 Uhr
7 Kommentare
Neuester Kommentar
Nein, wird nicht. Es werden nur die Kunden angezeigt, die mehr als 0 Bestellungen getätigt haben und die Anzahl der gesamten Bestellungen = der Anzahl der Bestellungen in dem genannten Monat ist.
Hat der Kunde vorher schon bestellt, dann ist Anzahl Gesamtbestellungen > Bestellungen des Monats und die Bedingung ist nicht erfüllt.
Hat der Kunde vorher schon bestellt, dann ist Anzahl Gesamtbestellungen > Bestellungen des Monats und die Bedingung ist nicht erfüllt.
Moin ottscho,
Dein Select hab ich mir mal nicht angetan, das klingt mir für die Aufgabenstellung zu kompliziert. Ich such mir einfach das erste Angebot und les den Kunden dazu, das war doch das Gewünschte, oder?
Da ich Deine Tabellen nicht da habe und auch nicht weiß, was Du überhaupt für eine DB hast, ist das Ganze natürlich ungetestet, sollte aber so passen:
Gruß, Mad Max
Dein Select hab ich mir mal nicht angetan, das klingt mir für die Aufgabenstellung zu kompliziert. Ich such mir einfach das erste Angebot und les den Kunden dazu, das war doch das Gewünschte, oder?
Da ich Deine Tabellen nicht da habe und auch nicht weiß, was Du überhaupt für eine DB hast, ist das Ganze natürlich ungetestet, sollte aber so passen:
select k.*, a.MinDatum
from Kunden k
join ( select Kundennummer, min (Angebotsdatum) "MinDatum"
from Angebote
group by Kundennummer
) a on k.Kundennummer = a.Kundennummer
where a.MinDatum between '2009-10-01' and '2009-10-31'
Gruß, Mad Max