【发布时间】:2013-04-01 01:52:07
【问题描述】:
我有两个类似的表:
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)。
我做错了什么? 谢谢!!
【问题讨论】:
-
为什么需要将这些表连接在一起?看来您要求和的列仅在 TABLE2 中,PC、日期、数字、名称和 ID 列是否是唯一键。我假设您在“TABLE2”中还有其他要显示的信息?如果上面提到的五列是唯一键,那么,您可以在 WHERE 子句中添加所有这些以消除似乎是您的问题的重复项。