MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 30.03.2010, 06:40   #1
cheaptrick
MOF Koryphäe
MOF Koryphäe
Standard Acc2003 - Top 10 über mehrere Gruppen

Hallo,

ich habe eine Abfrage, die als Ergebnis eine Kundennummer, Produktnummer und den zugehörigen Umsatz auswirft.
Was ich jetzt aber benötige sind die jeweils 10 umsatzstärksten Produkte jedes Kunden. Mit der Top n-Bedingung komme ich da irgendwie nicht weiter.

Kann mir jemand einen Tipp geben?

Gruß

cheapy
cheaptrick ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 30.03.2010, 07:55   #2
hcscherzer
MOF Guru
MOF Guru
Standard

Ist die Kombination von Kunde und Produkt eindeutig?
Dann könnte es vielleicht so gehen:
Code:

select * from umsatzabfrage u
 where str(u.kundennummer) & str(u.produktnummer) in
 (select top 10 str(a.kundennummer) & str(a.produktnummer)
  from umsatzabfrage a
  where a.kundennummer = u.kundennummer
  order by a.umsatz desc)
Könnte bei vielen Datensätzen aber dauern ...

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 30.03.2010, 12:53   #3
cheaptrick
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

Zitat: von hcscherzer Beitrag anzeigen

Ist die Kombination von Kunde und Produkt eindeutig?
Dann könnte es vielleicht so gehen:

Code:

select * from umsatzabfrage u
 where str(u.kundennummer) & str(u.produktnummer) in
 (select top 10 str(a.kundennummer) & str(a.produktnummer)
  from umsatzabfrage a
  where a.kundennummer = u.kundennummer
  order by a.umsatz desc)
Könnte bei vielen Datensätzen aber dauern ...

Also, wenn ich das mit meiner Access-DB versuche, dass ist sie platt, dabei sind es gar nicht so viel Datensätze.
Hab mich jetzt entschlossen die Benötigten Daten bereits auf dem Server zu aggregieren, da geht's ganz flott.
cheaptrick ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 30.03.2010, 17:44   #4
tramp
MOF Profi
MOF Profi
Standard

Hallo,

so könnte es gehen:

Code:

SELECT Kundennummer, Produktnummer, Umsatz,
(SELECT COUNT(Umsatz) FROM DeineTabelle AS tmp WHERE tmp.Umsatz > DeineTabelle.Umsatz 
AND tmp.Kundennummer=DeineTabelle.Kundennummer) AS Rang
FROM DeineTabelle
GROUP BY Kundennummer, Produktnummer, Umsatz
HAVING ((((SELECT COUNT(Umsatz) FROM DeineTabelle AS tmp 
WHERE tmp.Umsatz > DeineTabelle.Umsatz AND tmp.Kundennummer=DeineTabelle.Kundennummer))<10))
ORDER BY Kundennummer, Umsatz DESC;

Gruß Peter
tramp ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 31.03.2010, 08:25   #5
cheaptrick
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

Hallo Peter,

es funktioniert nicht nur sondern liefert bei > 60.000 Datensätzen auch sehr schnell ein Ergebnis!

Danke
cheaptrick ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 31.03.2010, 16:54   #6
hcscherzer
MOF Guru
MOF Guru
Standard

Ohne Ausgabe des Rang ist es vielleicht noch schneller (der ergibt sich doch aus der Sortierung) ... aber den Ansatz werde ich mir merken. Super.
Code:

SELECT Kundennummer, Produktnummer, Umsatz
FROM DeineTabelle
GROUP BY Kundennummer, Produktnummer, Umsatz
HAVING ((((SELECT COUNT(Umsatz) FROM DeineTabelle AS tmp 
WHERE tmp.Umsatz > DeineTabelle.Umsatz AND tmp.Kundennummer=DeineTabelle.Kundennummer))<10))
ORDER BY Kundennummer, Umsatz DESC;

__________________

Freundlichen Gruß
Hans-Christian
-----------------------------------------
Oft erwünscht, selten beachtet: nach Erledigung des Problems den Thread als erledigt zu markieren
-----------------------------------------
Ich möchte nur Mitglied in einem Verein sein, der Leute wie mich nicht als Mitglied aufnimmt (Groucho Marx).
-----------------------------------------
Ab sofort regelmässig: MOF Stammtisch in Bremen. Näheres hier.

Geändert von hcscherzer (31.03.2010 um 16:56 Uhr).
hcscherzer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:01 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.