Frage zu SQL-SELECT Gruppierungen

21/08/2007 - 15:09 von Winfried Wolf | Report spam
Hallo,
ich hab hàufiger mal Auswertungen zu machen in der Art:

Artikel1 Kunde1 Umsatz Prozent_Umsatz
Artikel1 Kunde2 Umsatz Prozent_Umsatz
Artikel1 Kunde3 Umsatz Prozent_Umsatz
Artikel2 Kunde1 Umsatz Prozent_Umsatz
Artikel2 Kunde2 Umsatz Prozent_Umsatz
Artikel2 Kunde3 Umsatz Prozent_Umsatz
usw.

wobei der Wert Prozent_Umsatz relativ zum Gesamtumsatz des jeweiligen
Artikels ist.

Bislang mach ich das immer recht umstàndlich, indem ich zum einen:

SELECT Artikel, Kunde, SUM(Umsatz) AS Umsatz;
FROM mydbf;
GROUP BY Artikel,Kunde;
INTO CURSOR mycursor

dann eine 2. Tabelle:

SELECT Artikel, SUM(umsatz) AS ArtUmsatz;
FROM mycursor;
GROUP BY artikel;
INTO CURSOR myArtUms READWRITE

und dann den 2. Cursor indiziere und bei der Ausgabe eine UDF verwende,
die den Prozentsatz per 100*mycursor.Umsatz/myArtUms.ArtUmsatz für jeden
Artikel errechnet.

Frage:
==Kann man das nicht eleganter hinkriegen? Ich grübel schon ne ganze Zeit,
aber irgendwie fàllt mir nichts vernünftiges ein.

Gruß,
WiWo.
 

Lesen sie die antworten

#1 Jens Brand
21/08/2007 - 15:57 | Warnen spam
Hallo Winfried!

ich hab hàufiger mal Auswertungen zu machen in der Art:

Artikel1 Kunde1 Umsatz Prozent_Umsatz
Artikel1 Kunde2 Umsatz Prozent_Umsatz
Artikel1 Kunde3 Umsatz Prozent_Umsatz
Artikel2 Kunde1 Umsatz Prozent_Umsatz
Artikel2 Kunde2 Umsatz Prozent_Umsatz
Artikel2 Kunde3 Umsatz Prozent_Umsatz
usw.

wobei der Wert Prozent_Umsatz relativ zum Gesamtumsatz des jeweiligen
Artikels ist.



Wenn du VFP9 einsetzt, dann kannst du eine Unterabfrage verwenden:

SELECT Artikel, Kunde, SUM(Umsatz) AS Umsatz,;
sum(UMSATZ) / (select sum(UMSATZ) from mydbf as mydbf2;
where mydbf.artikel == mydbf2.artikel) as Prozent_Umsatz;
FROM mydbf;
GROUP BY Artikel,Kunde;
INTO CURSOR mycursor



Viele Grüße

Jens Brand

Ähnliche fragen