从最大值获得前一个

时间:2012-03-13 04:55:33

标签: sql oracle

我有以下的SQL查询,希望从表中获取之前的最大值。

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

通过这个查询,我获得了每辆车的最大卡号。但我想得到那个最大值的前提。例如

如果车辆号码有卡号21,19,17,10,5,6,1,我想从19功能获得max

请有人告诉我如何在sql中执行此操作。

2 个答案:

答案 0 :(得分: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;

当然,这并没有考虑到您的问题中看似随意的排序,也不会使用重复的最大数字。

答案 1 :(得分: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