2013-04-09 87 views
0

我有兩個表相似,這些:SQL SUM錯誤(總和及乘)

TABLE1 
PC Date  Num Name ID 
8901 01/03/2013 5099 AAA 11 
8901 01/03/2013 5099 AAA 11 
8901 01/03/2013 5099 AAA 11 
8901 02/03/2013 5099 AAA 12 
8902 03/03/2013 5099 AAA 13 
8903 04/03/2013 5099 AAA 14 

TABLE2 
PC Date  Num Name ID Bar2 
8901 01/03/2013 5099 AAA 11 3 
8901 01/03/2013 5099 AAA 11 2 
8901 01/03/2013 5099 AAA 11 9 
8901 02/03/2013 5099 AAA 12 3 
8902 03/03/2013 5099 AAA 13 4 
8903 04/03/2013 5099 AAA 14 5 

而這個查詢:

SELECT TABLE1.PC, TABLE1.Date, TABLE1.Num, TABLE1.Name, COUNT(*), SUM(TABLE2.Bar2)   
FROM TABLE1, TABLE2 
WHERE TABLE1.ID = TABLE2.ID   
GROUP BY TABLE1.PC, TABLE1.Date, TABLE1.Num, TABLE1.Name   
ORDER BY TABLE1.PC, TABLE1.Date 

結果是:

PC  Date   Num  Name COUNT SUM 
8901 01/03/2013 0:00 5099 AAA 9  42 
8901 02/03/2013 0:00 5099 AAA 1  3 
8902 03/03/2013 0:00 5099 AAA 1  4 
8903 04/03/2013 0:00 5099 AAA 1  5 

因此,它總和,然後它乘以條目的nº((3 + 2 + 9)* 3 = 42)。

我在做什麼錯? 謝謝!!

+0

爲什麼你需要加入這些表一起?看起來,您正在進行的求和的列僅在TABLE2中列PC,日期,數字,名稱和ID合在一起時是一個UNIQUE鍵。我假設你在「TABLE2」中有你想要顯示的其他信息?如果上面提到的五列是一個UNIQUE鍵,那麼可以在WHERE子句中添加所有這些以消除看起來是您的問題的重複項。 – 2013-04-09 15:02:47

回答

0

這是不完全清楚自己想要的期望的結果是什麼,但你可以使用子查詢來獲得總和:

SELECT t1.PC, 
    t1.Date, 
    t1.Num, 
    t1.Name, 
    COUNT(*), 
    t2.Total 
FROM TABLE1 t1 
INNER JOIN 
(
    SELECT SUM(Bar2) Total, ID 
    FROM TABLE2 
    GROUP BY ID 
) t2 
    ON t1.ID = t2.ID 
GROUP BY t1.PC, t1.Date, t1.Num, t1.Name, t2.Total 
ORDER BY t1.PC, t1.Date 

SQL Fiddle with Demo

+0

我不知道如何把它放在MS Query中。我想在第一個例子(ID = 11)中得到的結果是COUNT = 9而不是3,SUM = 14而不是42。 – caviezel 2013-04-09 15:52:20