다음 표가있는 경우 :
Table name: FOO
ID | NUMBER | EVENT | NAME | CAR
1 | 12 | OFFER | Adam | VW
2 | 13 | ORDER | Adam | VW
3 | 11 | OFFER | Adam | BMW
4 | 12 | OFFER | Adam | BMW
5 | 3 | OFFER | Adam | BMW
6 | 1 | ORDER | Mark | Mercedes
7 | 1 | ORDER | Mark | BMW
쿼리는
Result name: FOO
ID | NUMBER | EVENT | NAME | CAR
2 | 13 | ORDER | Adam | VW
4 | 12 | OFFER | Adam | BMW
6 | 1 | ORDER | Mark | Mercedes
7 | 1 | ORDER | Mark | BMW
다음 규칙이 적용됩니다.
- Get the records which have DISTINCT NAME AND CAR
- If more than one record with the same NAME AND CAR exists, get the one with MAX NUMBER
- ID, NUMBER, EVENT should not count towards the DISTINCT row rule
DB 플랫폼은 DB2이지만 순수한 SQL이면 모든 SQL이 좋습니다.
나는 전체 행에서 (NAME, CAR)에만 적용되는 DISTINCT 규칙을 관리하지 않으며 동일한 (NAME, CAR)을 가진 행이 두 개 이상 존재하면 NUMBER가 가장 높은 행을 가져옵니다.
순수하고 완전한 ansi-92 SQL에서 :
select t1.*
from Foo t1
inner join
(
select Name, Car, max(number) as maxNo
from Foo
group by Name, Car
) x2
on t1.Name = x2.Name
and t1.Car = x2.car
and t1.Number = x2.maxNo
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다