Benutzer mit den meisten Antworten
SQL-Abfrage - Filtern möglich

Frage
-
Hallo Zusammen,
ich komme bei einem SQL-Statement nicht weiter. Ich habe eine Umsatztabelle, in welcher Kundennummer, Geschäftsbereich und Auftragsumsätze stehen. In einer zweiten Tabelle wird der Kundennummer ein Name zugeordnet. Beispiel:
Mit
SELECT DISTINCT a.Kundennummer, b.Kurzname, a.Geschaeftsbereich FROM scoffice.dbo.Umsaetze AS a, scoffice.dbo.Kontakte AS b WHERE a.Kundennummer=b.KontaktNummer ORDER BY Kundennummer ASC
bekomme ich folgendes Ergebnis:
Ist es möglich, diese Tabelle zu filtern, das mir nur die Kunden angezeigt werden, welche noch nie bei dem Geschäftsbereich "Bürobedarf" gekauft haben? Beispiel: Kunde A hat bei Bürobedarf und Büromaschinen gekauft, also wird er nicht gelistet. Kunde B hat bei Büromaschinen und Büromöbel gekauft, also wird er gelistet.
Grüße Jan
Antworten
-
Hallo Jan,
die kannst Du einfach mit NOT EXISTS rausfiltern =>
P.S.: Old-Style JOINS sollte man vermeiden, das ist von MS abgekündigt und ab einer bestimmte SQL Version wird das dann nicht mehr unterstützt.SELECT DISTINCT a.Kundennummer, b.Kurzname, a.Geschaeftsbereich FROM scoffice.dbo.Umsaetze AS a INNER JOIN scoffice.dbo.Kontakte AS b ON a.Kundennummer=b.KontaktNummer WHERE NOT EXISTS (SELECT 1 FROM coffice.dbo.Umsaetze AS SUB
WHERE SUB.Kundennummer = a.Kundennummer and SUB.Geschaeftsbereich = 'Bürobedarf') ORDER BY Kundennummer ASC
Olaf Helper
[ Blog] [ Xing] [ MVP]
- Bearbeitet Olaf HelperMVP Freitag, 4. Oktober 2019 12:10
- Als Antwort markiert Jan_dBF Freitag, 4. Oktober 2019 12:58
Alle Antworten
-
Hallo Jan,
die kannst Du einfach mit NOT EXISTS rausfiltern =>
P.S.: Old-Style JOINS sollte man vermeiden, das ist von MS abgekündigt und ab einer bestimmte SQL Version wird das dann nicht mehr unterstützt.SELECT DISTINCT a.Kundennummer, b.Kurzname, a.Geschaeftsbereich FROM scoffice.dbo.Umsaetze AS a INNER JOIN scoffice.dbo.Kontakte AS b ON a.Kundennummer=b.KontaktNummer WHERE NOT EXISTS (SELECT 1 FROM coffice.dbo.Umsaetze AS SUB
WHERE SUB.Kundennummer = a.Kundennummer and SUB.Geschaeftsbereich = 'Bürobedarf') ORDER BY Kundennummer ASC
Olaf Helper
[ Blog] [ Xing] [ MVP]
- Bearbeitet Olaf HelperMVP Freitag, 4. Oktober 2019 12:10
- Als Antwort markiert Jan_dBF Freitag, 4. Oktober 2019 12:58
-
Hallo Jan,
Die Tabelle Kontakte, so kann ich nur raten, soll einen Spalte Kundennummer haben? Ist dem so.
Dann schau mal ob das hier geht:
SELECT
DISTINCT um.Kundennummer, um.Kurzname, um.Geschaeftsbereich
FROM scoffice.dbo.Umsaetze um
left join scoffice.dbo.Kontakte ko on um.Kundennummer= ko.Kundennummer
where ko.kundennummer is null
and um.Geschaeftsbereich='Bürobedarf'
ORDER BY um.Kundennummer ASC
Nur, hier wird die Tabelle Kontakte abgefragt. Um die Kunden zu ermitteln hat es bestimmt die Kundenstammtabelle?
Aktuell erhälst Du (nur) die Kunden, mit einem Kontakt, die nie einen Umsatz im Geschäftsbereich Bürobedarf gemacht haben.
Willst Du das wirklich?
HTH
Grüße Alexander