2017-06-01 159 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 –