저는이 특정 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에 대해 여러 항목이 있습니다. 이 값은 양수 및 음수 일 수 있습니다. 음수 값은 정정을 나타내며 이에 따라 해당 양수 값은 "0이됩니다".
지금 질문해야하는 것은 customerID 당 모든 최대 값의 최대 값입니다. 위의 예에서 customerID 123456789의 최대 값은이 고객 ID의 다른 모든 값이 서로를 무효화하기 때문에 200입니다. 따라서 고객 ID 987654321의 최대 값은 210입니다.
궁극적으로 내 쿼리는 음수 값으로 수정/정정되지 않은 customerID 당 모든 최대 값 중에서 최대 값 210을 반환해야합니다.
도와 주시겠습니까?
편집 : SUM()이 여기에서 작동하지 않는다는 것을 명확히하기 위해 두 고객 ID에 200과210 값을 추가했습니다.
편집 # 2 :, 그냥 모든 음의 값이 1 개에 대응 동일한 양의 값은 짝이 있다고 가정 것 http://pastebin.com/TbNRTw5A
그건 문제입니다. 양수 값만 있고 그에 상응하는 음수 값이없는 고객 ID가있을 수 있습니다. 이 양수 값은 정확히 동일 할 수 있으므로 여러 개의 중복 항목이 있습니다. 그리고 기록을 위해 나는 그 데이터베이스를 만들지 않습니다. ;-) – Popopinsel
@Popopinsel 가입 할 필요가 없습니다. 양수/음 쌍은 동일한 CustomerID에 속해 있기 때문에 SUM()이 수행 될 때 서로를 취소합니다. 즉, 해당 쿼리가 GROUP BY를 수행하는 방식입니다. 그런 다음, (CustomerID 당) 쿼리가 반환하는 값의 최대 값을 찾으려면 다른 SELECT MAX (Value) ... 쿼리로 래핑하면됩니다. –
그러나 양수 값과 음수 값 쌍이없고 양수 값 (양 또는 같음)이없는 경우 SUM()은 최대 값을 반환하지 않습니다. 분명히 대신 모든 양수 값의 합계를 반환합니다. – Popopinsel