2012-03-13 39 views
3

我有以下的sql查詢和di想要從表中獲取以前的最大值。從最大值得到前一個

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

通過這個查詢,我得到各個vehicle.But的每個最大卡號我想那max.For例如previouse

如果車輛數量有卡號21,19,17,10,5,6,1,我想從19max函數

請別人告訴我如何在sql中執行此操作。

+1

除非有一種已知的訂購方式,否則我不認爲你想要的是可能的。 「21,17,19,10,5,6,1」的順序如何確定? – ninesided 2012-03-13 05:02:38

+0

@ninesided是什麼使它不可能? – Shaheer 2012-03-13 05:03:31

+1

看起來你實際上是在尋找'19'還是顯然你在你的問題中缺少了一些東西... – 2012-03-13 05:27:22

回答

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

這會選擇最大的'card_no',而不管它被分組的車號。我不認爲他在找什麼。 – doctorless 2012-03-13 05:04:01

+0

好吧,我現在編輯好了嗎? – Shaheer 2012-03-13 05:11:43

+0

親愛的ora-01427正在生成。因爲dnt作品 – 2012-03-13 07:03:39

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; 

當然,這並沒有考慮到從看似隨意訂購您的問題,也不會有重複的最大數量。

相關問題