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