Zum Inhalt wechseln


Foto

Probleme mit SUM und GROUP

MS SQL

  • Bitte melde dich an um zu Antworten
3 Antworten in diesem Thema

#1 Martin67

Martin67

    Newbie

  • 3 Beiträge

 

Geschrieben 29. August 2015 - 11:03

Hallo in die Runde,

die Profis werden sicherlich die Hände über dem Kopf zusammenschlagen, ich mach das noch nicht so lange und habe nur rudimentäre SQL Kentnisse. Ich muss für unsere Firma diverse Abfragen erstellen und eine davon treibt mich in den Wahnsinn. Da brauche ich eine Idee, wie das umzusetzen ist.

Das ist meine Abfrage:

SELECT
W.Bezeichnung AS Warengruppe,
SUM(ISNULL(RP.SummeKalk,0)) AS Rechnungen, -- Rechnungspositionen summieren

FROM RechKopf RK
INNER JOIN RechPos RP ON RP.RechKopfI3D = RK.I3D
INNER JOIN Artik A ON A.I3D = RP.ArtikelI3D
INNER JOIN WAREN W ON W.Warengruppe = A.Warengruppe

WHERE RK.KundenID =14521
Group By W.Bezeichnung

Ergebnis sieht wie im Anhang aus. Ich muss zwingend den 'Kontingentausgleichsartikel' von der 'Dienstleistung' in Abzug bringen. Die Zeile Dienstleistung soll also nur noch 7159-2611 = 4548 sein.
Am liebsten würde ich in die SUM Formel eine Bedingung einbauen, dass dazu führt das beide Zeilen nur in einer Zeile 'Dienstleistung' aufsummiert werden.


Ich hoffe, ich habe für einen Gedankenanstoß genug Infos geliefert.

Angehängte Dateien

  • Angehängte Datei  SQL.png   2,06K   1 Mal heruntergeladen


#2 Martin67

Martin67

    Newbie

  • 3 Beiträge

 

Geschrieben 30. August 2015 - 08:24

Ich konnte die Daten noch weiter einschränken und damit das gewünschte Ergebnis erzielen. Ist mir erst heute Nacht eingefallen.

Danke.

#3 Sunny61

Sunny61

    Expert Member

  • 22.101 Beiträge

 

Geschrieben 30. August 2015 - 14:35

Ich konnte die Daten noch weiter einschränken und damit das gewünschte Ergebnis erzielen. Ist mir erst heute Nacht eingefallen.


Jetzt wäre es natürlich nocht gut, wenn Du die vollständige Lösung posten würdest, Danke. ;)
Gruppenrichtlinien: http://www.gruppenrichtlinien.de/

#4 Martin67

Martin67

    Newbie

  • 3 Beiträge

 

Geschrieben 30. August 2015 - 15:44   Lösung

Jetzt wäre es natürlich nocht gut, wenn Du die vollständige Lösung posten würdest, Danke. ;)

 

Da hast du wohl recht. Ich hatte mich bei dem Problem zu sehr an dem Problem selbst gehangen und nicht die Entstehung des Problems betrachtet.

Grob gesagt habe ich alle Rechnungspositionen stumpf aufsummiert und bei näherer Betrachtung der Daten gibt es Rechnungen bei denen Dienstleistung auf einer Rechnung gebucht wurde, die durch negative Kontingentausgleichsartikel in gleicher Höhe den Endbetrag der Rechnung auf 0 gedrückt haben. 

 

Ich musste nur noch die Positionen summieren, bei denen der Rechnungsbetrag nicht 0 ist. Das Feld steht in der Tabelle RechKopf und die Spalte heißt 'netto'.

Durch einfaches Erweitern der Bedingung der WHERE Klausel war der Spuk vorbei. Ich setze mich morgen nochmal intensiv ran und rechne händisch ein paar Belege nach um das Ergebnis zu kontrollieren. In der Datenbank ist nichts dokumentiert, jeder Programmierer hat immer nur Felder hinzugefügt und dadurch macht das besonders viel Spaß die richtigen Felder zu suchen. 

 

WHERE RK.KundenID =14521

AND RK.netto <> 0  

 

VG Martin





Auch mit einem oder mehreren der folgenden Tags versehen: MS SQL