Select über Top20 Kunden in einem Jahr

Andi0424

Grünschnabel
Hi zusammen,

ich will einen Select über die top20 kunden gruppiert auf jedes monat in einem ganzen jahr machen.

Dabei ist der Zeitraum jedoch frei wählbar. also z.b. von 01.01.2007 bis 31.12.2007,
jedoch aber auch von 01.01.2007 bis 31.01.2007.

Die Einschränkung auf einen Monat funktioniert wunderbar, jedoch wenn ich über ein ganzes jahr gehen will, bekomme ich nicht jeden monat 20 kunden.

Könnte sich jemand vielleicht diesen select ansehen und mir für diese select einen verbesserungsvorschlag geben.

Code:
SELECT     A0Name1, ROUND(SUM(netto_de), 2) AS umsatz, MIN(CONVERT(varchar(3), Belegdatum)) AS monat
FROM         v_khkvkbelege AS belege
WHERE     (Belegdatum >= @datumvon) AND (Belegdatum <= @datumbis) AND (Belegart = 'Auftragsbestätigung') AND (Mandant = '1') AND 
                      (Auswertungskennzeichen = @markt) AND (A0Name1 IN
                          (SELECT     TOP 20 A0Name1
                            FROM          v_khkvkbelege
                            WHERE      (Belegdatum >= @datumvon) AND (Belegdatum <= @datumbis) AND (Auswertungskennzeichen = @markt) AND 
                                                   (Belegart = 'Auftragsbestätigung') AND (Mandant = '1')
                            GROUP BY A0Name1
                            ORDER BY SUM(netto_de) DESC))
GROUP BY A0Name1, MONTH(Belegdatum)


Weitere Einschränkungen wären der Markt, also z.B. North America, EU-Central, also sowas.

Danke schon mal im Voraus

Gruß,
Andi
 
Hi

Um welches DBMS handelt es sich denn?

SQL Server? Dann heißt genau so wie du gefragt hast: TOP ;) (SELECT TOP 20 ....)

MySQL? LIMIT

Oracle? müsste ich jetzt Suchen, kannst du aber auch selbst machen, da du die Equivalente andere DBMS ja jetzt kennst ;)
 
hi,

dbms ist sqlserver.

Wenn ich den Zeitraum auf einen Monat begrenze, bekomme ich wirklich die Top20 Kunden, aber eben nur in diesem Monat.

Sobald ich den Zeitraum auf ein ganzes Jahr wähle, dann gruppiert er irgendwie anders.
ich bekomme dann für januar 16 kunden, für februar sinds 14, weißte was ich mein?

vg
 
Hm, müsstest du da nicht als Grenzen den 1.1. und den 31.12 des aktuellen Jahres übergeben und dann einfach mit between den Zeitraum abfragen? Dann müsstest du nur noch den Umsatz, den Nettokram oder ähnliches passend zusammenrechnen pro Kunden und dann sortieren. Und davon die Top 20 nur auslesen.
 
Ja, so kriege ich aber nur die TOP 20 fürs ganze Jahr.
Ich will aber die Top 20 für jedes Monat in einem Jahr.

oder versteh ich da was ned an deinem vorschlag?
 
hi,

dbms ist sqlserver.

Wenn ich den Zeitraum auf einen Monat begrenze, bekomme ich wirklich die Top20 Kunden, aber eben nur in diesem Monat.

vg

Ehm, hä? Was ist noch mal genau das Problem? Willst du die im ganzen Jahr und kriegst nur die für den Monat? Oder umgekehrt? Ich merk schon, Freitags morgens ist schlimm für mich. :)
 
Also der Zeitraum soll frei wählbar sein, sowohl einen Monat als auch ein Jahr.
Verstehst?

Und wenn ich jetzt nen monat als Zeitraum wähle, dann funktionierts. Hier krieg ich meine 20 Kunden zurück.

Aber wenn ich den Zeitraum auf ein Jahr wähle, dann bekomme ich für jeden monat nicht 20 Kunden sondern einmal sinds 15, beim nächsten sinds dann 17.

Jepp, Freitag is wirklich schlimm... Hab seit gestern scho ne kleine denkblockade... :( :confused:
 
Hm, waren die denn vor ein paar Monaten schon angelegt? Wenn noch nicht, könnte es sein, dass sie da einfach noch keine Werte haben und aus der Bewertung rausfallen. Dann könnte der Select ja auch theoretisch weniger als 20 Kunden liefern.
 
Nein, die haben alle Werte. Die gibts nämlich seit 2004 schon. Und ich hab jetzt nur mal das Jahr 2007 ausgewählt.

Also von den Daten her passt alles.
Ich glaube das Problem liegt daran, dass wenn ein gleicher Kunde vorkommt also z.B. im Januar als auch im Februar, dass er den zusammenschließt und dann fällt er natürlich irgendwo raus.

Ka. ich weiß es selber nicht genau und verstehen tu ich's erst recht ned... Is ja schließlich Freitag.

:confused::confused::confused::confused::confused::confused::confused::confused:
 

Neue Beiträge

Zurück