Benutzer mit den meisten Antworten
Abfrage, ABC Analyse

Frage
Antworten
-
Hallo Kim,
Du brauchst die laufende Summe über den relativen Periodenverbrauch und kannst diese dann entsprechend den drei Kategorien auswerten.
http://www.insidesql.org/blogs/frankkalis/2004/07/13/laufende-summe-in-t-sqlEtwas komplexer aber effektiver für große Datenmengen:
http://explainextended.com/2010/01/22/sql-server-running-totals/Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP
www.insidesql.org/blogs/cmu- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 7. Oktober 2011 12:50
- Als Antwort markiert DerKim Freitag, 7. Oktober 2011 13:51
Alle Antworten
-
Hallo Kim,
Du brauchst die laufende Summe über den relativen Periodenverbrauch und kannst diese dann entsprechend den drei Kategorien auswerten.
http://www.insidesql.org/blogs/frankkalis/2004/07/13/laufende-summe-in-t-sqlEtwas komplexer aber effektiver für große Datenmengen:
http://explainextended.com/2010/01/22/sql-server-running-totals/Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP
www.insidesql.org/blogs/cmu- Als Antwort vorgeschlagen Robert BreitenhoferModerator Freitag, 7. Oktober 2011 12:50
- Als Antwort markiert DerKim Freitag, 7. Oktober 2011 13:51
-
Hi Christoph,
erstmal Danke für die Antwort!
Habe gerade die 1. Lösung probiert. Funktioniert, allerdings nach 1:30min Timeout und gerade mal 512 Datensätze.
Werde mir morgen mal in Ruhe die 2. Lösung anschauen und melde mich dann wieder.
Gruß
Kim -
Hallo Kim,
ohne Deine Datenstruktur zu kennen, liefert diese Statement bei mir in einer vergleichbaren Tabelle den prozentualen Anteil jedes Artikels am Gesamtumsatz
1800 Zeilen weniger als eine Sekunde
select a.Artikelnummer,SUM(a.menge) AS Jahresbedarf,a.preis as Stueckpreis,SUM(a.menge*a.preis)as absolut, (SELECT SUM(b.menge*b.preis )FROM bewegungsdaten b where a.Artikelnummer=b.Artikelnummer)*100/ (SELECT SUM(c.menge*c.preis )FROM bewegungsdaten c)AS relativ FROM bewegungsdaten a group by Artikelnummer,preis ORDER BY relativ DESC
Gruss Uli
-
Hi Uli,
den prozentualen Anteil habe ich ja schon berechnet, es geht "lediglich" um die Addition der Prozente damit ich die Klassifizierung der Artikel in A, B oder C setzen kann.
So habe ich es jetzt im Quellcode gemacht. Der Anwender gibt den Zeitraum (dtpVon und dtpBis) ein und kann die Grenzen (numA, numB und numC) setzen. Was im Quellcode so einfach ist, habe ich via SQL nicht geschafft.
GrußDim listArtikel = (From x In myDB.GetABCAnalyseAbsatzzahlen(dtpVon.Value, dtpBis.Value) _ Select New With {x.ArtikelNr, x.AnzahlStück, x.Kilo, x.Prozent, .Klasse = ""}).ToList Dim SummeProzent As Decimal = 0 For Each Eintrag In listArtikel 'Klasse setzen SummeProzent = CDec(SummeProzent + Eintrag.Prozent) If SummeProzent < numA.Value Then Eintrag.Klasse = "A" ElseIf SummeProzent > 100 - numC.Value Then Eintrag.Klasse = "C" Else Eintrag.Klasse = "B" End If Next
Kim