2017-06-01 154 views
0

我想获得一列字段的SUM和另一列字段的另一个SUM。问题是,当查询执行的数字相加....添加使用SUM(列字段)时的数据值 - MySQL

我有不同的类型,认为它作为类型有自己的价值,他们手动编码,这意味着有没有TYPE表但我有一个类型列。每种类型有不同的数量,当我想获得类型号的总数..我只需要调用它(例如where type =“4”)

我只想获得总数或总数列与他们各自的类型,但我得到了不同的结果,因为他们加起来..任何人都可以给我想法如何做到这一点? :(谢谢

这里是我的查询:

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 

这是我得到的结果是:

enter image description here

这里是成交查询,其中类型是43enter image description here

这是计算的查询,其中类型是4

enter image description here

我想要得到的是成交的结果,并没有查询加在一起计算。

+0

是wour'组by'条款错了吗?它不应该是由b.FIRSTNAME组合吗?也许向我们展示你的模式。 – gregor

+0

您可以添加样本数据和预期结果吗? –

+0

添加了样本数据和预期结果 –

回答

0

分离出的总和(C)通过使用子查询

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; 

结果

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

OMG!有效!!!我迄今为止尝试过的所有问题都让我头晕目眩。谢谢! :d –