0
我很努力地使用此特定的Access 2010 SQL查询很长时间了。让我先告诉你我的表格是什么样子的:SQL查询最大限度地获得每个客户的所有最大值
customerID value
123456789 100
123456789 -100
123456789 300
123456789 -300
123456789 150
123456789 -150
123456789 200
123456789 200
987654321 500
987654321 -500
987654321 200
987654321 -200
987654321 210
987654321 210
您看到我有多个条目,其中有多个值。这些值可以是正面和负面的。负值表示更正,因此相应的正值“变为零”。
我现在需要查询的是每个customerID所有最大值的最大值。在上面的示例中,customerID 123456789的最大值是200,因为此customerID上的所有其他值都彼此取消。因此,客户ID 987654321上的最大值为210.
最终,我的查询应该返回值210作为每个customerID的所有最大值中的最大值,这些值没有被负值更正/取消。
你能帮我解决吗?
编辑:添加(重复)值200和210到两个customerIDs,以明确SUM()不会在这里工作。
编辑#2:下面是一些(几乎)现实生活中的数据:http://pastebin.com/TbNRTw5A
这就是问题所在。可能有客户ID只有正值,并且没有相应的负值,我认为这会加入难度。这些正值也可能完全相同,因此有多个完全重复的条目。 而只是为了记录我不建立该数据库。 ;-) – Popopinsel
@Popopinsel您不需要进行连接。当执行SUM()时,正/负对相互抵消,因为它们属于同一个CustomerID,这就是查询执行GROUP BY的方式。然后,如果您想查找该(per-CustomerID)查询返回的最大值,只需将其包装在另一个“SELECT MAX(Value)...”查询中。 –
但是,如果没有正值和负值对,但只有正值(不论相同或不同),则SUM()不会返回最大值。显然它会返回所有正值的总和。 – Popopinsel