SQL Summe Mehrere Zeilen in eine

7

Ich brauche Hilfe mit der SUM-Funktion. Ich versuche, die Rechnungsbeträge für das gleiche Konto zu einer Gesamtsumme zu SUMMEN, aber die Ergebnisse, die ich bekomme, zeigen meine SUM-Spalte einfach multipliziert meine erste Spalte mit 3.

Hier ist, was ich als Ergebnisse für meine Scheindaten will:

%Vor%

Abfrage:

%Vor%

ODER

%Vor%

Ich würde es vorziehen, beide Ergebnisse wenn möglich zu haben.

Hier ist was ich bekomme:

Meine SUM-Spalte multipliziert nur mit drei Werten. Sie summiert die Daten nicht anhand der Kontonummer.

%Vor%     
Jason 20.01.2014, 20:32
quelle

6 Antworten

0

Danke für Ihre Antworten. Es stellte sich heraus, dass mein Problem ein Datenbankproblem mit doppelten Einträgen war, nicht mit meiner Logik. Eine schnelle Tabellensynchronisation und die SUM Funktion funktionierten wie erwartet. Dies alles ist immer noch nützliches Wissen für die SUMME-Funktion und ist lesenswert, wenn Sie Probleme haben, es zu benutzen.

    
Jason 22.01.2014, 20:28
quelle
10

Wenn Sie Ihr Ergebnis nicht gruppieren möchten, verwenden Sie eine Fensterfunktion.

Sie haben Ihr DBMS nicht angegeben, aber dies ist ANSI SQL:

%Vor%

Hier ist ein SQLFiddle: Ссылка

Sie können sogar eine laufende Summe hinzufügen, indem Sie Folgendes hinzufügen:

%Vor%

gibt Ihnen die Summe bis zum aktuellen Zeilendatum.

    
a_horse_with_no_name 20.01.2014 21:16
quelle
7

Sie gruppieren mit BillDate , aber die Rechnungsdaten unterscheiden sich für jedes Konto, sodass Ihre Zeilen nicht gruppiert werden. Wenn Sie darüber nachdenken, macht das nicht einmal Sinn - sie sind unterschiedliche Rechnungen und haben unterschiedliche Daten. Das gleiche gilt für Bill - Sie versuchen Rechnungen für ein Konto zusammenzufassen, warum würden Sie danach gruppieren?

Wenn Sie BillDate und Bill von den Klauseln select und group by belassen, erhalten Sie die korrekten Ergebnisse.

%Vor%     
Dave Zych 20.01.2014 20:36
quelle
3

Sie sollten nach dem Feld gruppieren, für das die SUM gelten soll, und nicht in SELECT irgendein Feld außer mehreren Zeilenwerten wie COUNT, SUM, AVE, etc., wenn Sie Bill-Feld wie in diesem Fall nur einschließen Der erste Wert in der Reihe der Zeilen wird angezeigt, was fast bedeutungslos und verwirrend ist.

Dies wird die Summe der Rechnungen pro Kontonummer zurückgeben:

%Vor%

Sie können nach Bedarf weitere Klauseln wie WHERE, ORDER BY usw. hinzufügen.

    
jvicab 20.01.2014 20:53
quelle
1
  

Ich habe das versucht, aber die Abfrage wird nicht ausgeführt und sagt mir, dass mein Feld in der SELECT-Anweisung ungültig ist, weil es weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten ist. Es zwingt mich, es dort zu behalten. Gibt es einen Weg dazu?

Sie müssen einen Self-Join durchführen. Sie können nicht aggregierte Daten in derselben Unterabfrage nicht zusammenfassen und beibehalten. ZB

%Vor%     
ubanerjea 20.01.2014 21:13
quelle
0

Ich muss Zeilen R1 und R2 Zeilen. Ich möchte nur zwei Zeilen hinzufügen (1074 und 649)

Anzahl der Titel   1074   649

%Vor%     
john willson 29.09.2015 03:48
quelle

Tags und Links