2012-03-13 3 views
3

나는 folowing SQL 쿼리를 가지고 있습니다. 테이블에서 최대 값을 얻고 싶습니다. 나는 그 max.For 예 previouse을받을하려는 각 vehicle.But 각각 최대 카드 번호를 가지고이 쿼리를 통해최대 값에서 이전을 얻으십시오

select max(card_no),vehicle_number 
FROM WBG.WBG_01_01 
group by vehicle_number 

차량 번호는 카드 번호 21,19,17,10,5,6,1이 있고 난에서 19을 얻으려면 max function

누구나 말해 줄 수있는 SQL에서 어떻게 할 수 있습니다.

+1

카드를 주문하는 방법이 알려진 경우가 아니라면 원하는대로 생각할 수 없습니다. '21, 17, 19, 10, 5, 6, 1 '의 순서는 어떻게 결정됩니까? – ninesided

+0

@ninesided 불가능하게 만드는 것은 무엇입니까? – Shaheer

+1

실제로 '19'를 찾고있는 것처럼 보입니다. 아니면 분명히 질문에 뭔가 빠져있는 것 같아요 ... –

답변

0

노력이 하나

select max(card_no),vehicle_number 
FROM WBG.WBG_01_01 
where card_no < (Select max(card_no) from WBG.WBG_01_01 group by vehicle_number) 
group by vehicle_number 
+0

이것은 그룹화 된 vehicle_number와 관계없이 매우 큰'card_no'를 선택합니다. 나는 그것이 그가 찾고있는 것이라고 생각하지 않는다. – doctorless

+0

괜찮습니까? 이제 괜찮습니까? – Shaheer

+0

친애하는 ora-01427가 생성 중입니다 .its dnt works –

1

또 다른 아이디어는 분석,이 같은 것을 사용하는 것입니다 :

select 
    vehicle_number, 
    prev_card_no 
from (
    select 
     card_no, 
     vehicle_number, 
     lag(card_no) over 
      (partition by vehicle_number order by card_no) as prev_card_no, 
     max(card_no) over 
      (partition by vehicle_number) as max_card_no 
    FROM WBG.WBG_01_01 
) 
where max_card_no = card_no; 

는 물론, 이것은로부터 계정으로 겉으로는 임의의 순서를 고려하지 않습니다 당신의 질문을하거나 중복 최대 숫자로 작동하지 않습니다.

관련 문제