2017-06-01 5 views
0

Ich versuche, die Summe von einem Spaltenfeld und ein anderes SUM mit einem anderen Spaltenfeld zu bekommen. Das Problem ist, wenn die Abfrage ausgeführt wird die Zahlen summieren sich ....Datenwerte hinzufügen bei Verwendung von SUM (Spaltenfeld) - MySQL

Ich habe verschiedene Typen, denke an es als die Typen hat ihren eigenen Wert und sie sind manuell kodiert, was bedeutet, dass es keine TYPE Tabelle ist aber ich habe eine Art Spalte. Jeder Typ hat einen anderen Betrag und wenn ich die Summe der Typennummer bekommen möchte. Ich muss nur anrufen (zB wo type = "4")

Ich möchte nur die Summe oder Summe der Spalte mit ihren jeweiligen Typen, aber ich bekomme ein anderes Ergebnis, weil sie addieren .. kann mir jemand Ideen, wie dies zu tun? :(Danke

Hier ist meine Frage:.

SELECT a.ID, b.FIRSTNAME, SUM(a.AMOUNT) as TRANSACT, SUM(c.AMOUNT) as 
CALCULATED FROM GNDSALE a 
INNER JOIN emp b ON a.ID= b.ID 
INNER JOIN gndsale c ON c.ID= b.ID 
where a.type = "43" and c.type = "4" 
group by a.ID 

Hier ist das Ergebnis, das ich bekam:

enter image description here

Hier ist die Transacted Abfrage aus, die Typ 43 ist : enter image description here

Hier ist Die berechnete Abfrage aus, die Typ 4 ist

enter image description here

Was ich will ist das Ergebnis Transacted erhalten und ohne die Abfrage berechnet sie zusammen addieren.

+0

Ist wour 'Gruppe by' Klausel falsch? Sollte es nicht "group by b.FIRSTNAME" sein? Vielleicht zeigen Sie uns Ihr Schema. – gregor

+0

Können Sie Beispieldaten und das erwartete Ergebnis hinzufügen? –

+0

hinzugefügt Beispieldaten und erwartetes Ergebnis –

Antwort

0

Separate aus der Summe (c) durch eine Unterabfrage mit

DROP TABLE IF EXISTS A,B,C; 

CREATE TABLE A(ID INT, AMOUNT INT, TYPE INT); 

CREATE TABLE B(ID INT, FIRSTNAME VARCHAR(10)); 

CREATE TABLE C(ID INT, AMOUNT INT,TYPE INT); 

INSERT INTO A VALUES 
(1,10,43),(1,10,50),(2,20,43),(2,20,43); 

INSERT INTO B VALUES (1,'AAA'),(2,'BBB'); 

INSERT INTO C VALUES (1,100,4),(2,200,4); 

SELECT a.ID, b.FIRSTNAME, SUM(a.AMOUNT) as TRANSACT, (SELECT SUM(c.AMOUNT) FROM C WHERE C.ID = A.ID AND C.TYPE = 4) as CALCULATED 
FROM a 
INNER JOIN b ON a.ID= b.ID 
#INNER JOIN c ON c.ID= A.ID 
where a.type = "43" #and c.type = "4" 
group by a.ID; 

Ergebnis

+------+-----------+----------+------------+ 
| ID | FIRSTNAME | TRANSACT | CALCULATED | 
+------+-----------+----------+------------+ 
| 1 | AAA  |  10 |  100 | 
| 2 | BBB  |  40 |  200 | 
+------+-----------+----------+------------+ 
2 rows in set (0.00 sec) 
+0

OMG! ES FUNKTIONIERTE!!! Mein Kopf wird schwindlig von all den Fragen, die ich bisher versucht habe .... DANKE !! : D –