SUM() funktioniert nicht.. oder doch Denkfehler?

Immi

Mitglied
Hallo Miteinander!

Ich bin mir einen neuen Report am erstellen, funktioniert auch alles tiptop.. Naja, fast alles. Zuerst eine kleine Beschreibung der Situation:

Bei dem Report handelt es sich um einen Rohertragreport von einem Restaurant. Angezeigt werden die Artikelnummer (ArtNr), die Bezeichnung des Artikels (BonTxt), die Menge (Menge), der Einkaufspreis (Ek), der Umsatz inkl. Mwst (Umsatz), den Umsatz exkl. Mwst (Netto).

Jetzt kommt der Kellner an die Kasse und tippt 1x Coca Cola. Dann geht er und tippt später wieder 1x Coca Cola.
Bei dieser Situation rechnet der Report die Menge und alles andere schön zusammen.

Tippt der Kellner allerdings 1x Coca Cola und dann später 2x Coca Cola, dann erscheint auf dem Report der Artikel Coca Cola zweimal, einmal mit der Menge 1 und einmal mit der Menge 2. Kann mir jemand sagen wieso dies nicht summiert wird zur Menge 3?

Hier ist noch mein Query:

Code:
SELECT
ArtNr, 
BuchPeriode, 
SUM(VkBrutto * Menge) AS Umsatz, 
SUM(Menge) AS Menge, 
SUM(Ek) AS Ek, 
BonTxt, 
MwstSatz, 
SUM((Vk - Ek) / (100 + MwstSatz) * 100) AS Netto

FROM Statistik

WHERE  BuchPeriode >= :DateEditVon
AND  BuchPeriode <= :DateEditBis

GROUP BY ArtNr, BuchPeriode, BonTxt, MwstSatz, Vk, Ek, Menge

Ich hoffe jemand kann mir helfen.. Hab ich was nicht beachtet im Query? Oder ist es einfach falsch, so wie ich es gemacht habe?

Vielen Dank bereits für Eure Hilfe!

lg
 
Hab jetzt die Menge und Vk aus der GROUP By rausgenommen. Jetzt funktioniert es Prima. Zum Glück doch ein Denkfehler meinerseits :)

Danke vielmals für deine Hilfe!

lg
 
Manmanman, hab's so gemacht wie du gesagt hast und funktionierte auch einwandfrei.. Doch jetzt ist es wieder nicht gruppiert?!

Hab ich wieder was falsch gemacht? Hier nochmal der aktuelle Query:

Code:
SELECT     ArtNr, 
           BuchPeriode, 
           SUM(VkBrutto * Menge) AS Umsatz, 
           SUM(Menge) AS Menge, 
           BonTxt, 
           MwstSatz, 
           SUM((Vk - Ek) / (100 + MwstSatz) * 100) AS DB1,        
           SUM(Vk / (100 + MwstSatz) * 100) AS Netto               

  FROM     Statistik AS d
 WHERE     BuchPeriode >= :DateEditVon
   AND     BuchPeriode <= :DateEditBis
   AND     Betr = :dBetrieb                                                       
   AND     Vk > 0
   AND     VkBrutto > 0                                           
 GROUP BY  ArtNr, 
           BuchPeriode, 
           BonTxt, 
           MwstSatz                
 ORDER BY  ArtNr

Dieser Query liefert folgendes Resultat:

Code:
7105	31.01.2008 00:00:00	9	1	1dl Poggio ai Ginepr	7.6	6.04089219330855	8.3643122676579935
7107	12.01.2008 00:00:00	9	1	1dl Fabelhaft	7.6	6.04089219330855	8.3643122676579935
7120	31.01.2008 00:00:00	9.5	1	1 dl Casa lo Alto	7.6	6.04089219330855	8.828996282527882
13000	31.01.2008 00:00:00	9.5	1	Tellerchen	7.6	6.2267657992565066	8.828996282527882
13001	31.01.2008 00:00:00	15	1	Teller v. Buffet	7.6	8.5501858736059475	13.940520446096654
13002	31.01.2008 00:00:00	38	2	Tomaten/Mozzarella	7.6	23.791821561338292	35.315985130111528
13012	31.01.2008 00:00:00	33	1	Gr. Geräucherter Red	7.6	21.840148698884761	30.669144981412643
13018	31.01.2008 00:00:00	33	1	Gr.Riesencrevetten	7.6	21.840148698884761	30.669144981412643
13019	31.01.2008 00:00:00	25	1	KlCrevetten-Schmette	7.6	16.635687732342006	23.234200743494423
13021	31.01.2008 00:00:00	12	1	Nüsslisalat mit Ei	7.6	9.014869888475836	11.152416356877325
13022	31.01.2008 00:00:00	21	1	kl. Blattsalat Eglif	7.6	13.197026022304833	19.516728624535318
13024	31.01.2008 00:00:00	27	1	Gr. Blattsalat Eglif	7.6	17.657992565055764	25.092936802973981
15300	31.12.2007 00:00:00	10	2	Room Charge	7.6	9.29368029739777	9.29368029739777
15300	01.01.2008 00:00:00	5	1	Room Charge	7.6	4.6468401486988853	4.6468401486988853
15300	31.01.2008 00:00:00	45	9	Room Charge	7.6	41.821561338289968	41.821561338289968
15606	31.01.2008 00:00:00	18	2	Rührei	7.6	16.171003717472118	16.728624535315987

Und mein Ziel wäre es, das jede Artikel Nummer (Erste Spalte) nur einmal vorkommt, eben gruppiert..

lg
 
Hallo Immi,

der SQL liefert genau das was er soll.

Das der Artikel 15300 mehrfach vorkommt, liegt daran, das dieser an verschiedenen Tagen (BuchPeriode) vorhanden ist.

Du gruppierst aber nach BuchPeriode, daher die mehrfachen Datensätze. Da du ja in der where-Bedingung das Datum schon einschränkst, lass das Feld BuchPeriode weg, dann passt auch dein Ergebniss.

Code:
SELECT     ArtNr,
           SUM(VkBrutto * Menge) AS Umsatz, 
           SUM(Menge) AS Menge, 
           BonTxt, 
           MwstSatz, 
           SUM((Vk - Ek) / (100 + MwstSatz) * 100) AS DB1,        
           SUM(Vk / (100 + MwstSatz) * 100) AS Netto               

  FROM     Statistik AS d
 WHERE     BuchPeriode >= :DateEditVon
   AND     BuchPeriode <= :DateEditBis
   AND     Betr = :dBetrieb                                                       
   AND     Vk > 0
   AND     VkBrutto > 0                                           
 GROUP BY  ArtNr, 
           BonTxt, 
           MwstSatz                
 ORDER BY  ArtNr
 
Zurück