получить предыдущее из максимального значения - PullRequest
3 голосов
/ 13 марта 2012

У меня есть следующий запрос sql, и я хочу получить предыдущее максимальное значение из таблицы.

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

С помощью этого запроса я получил каждый максимальный номер карты каждого транспортного средства. Но я хочу получить предыдущий номер этогоmax. Например,

, если номер транспортного средства имеет номер карты 21,19,17,10,5,6,1, и я хочу получить 19 из функции max

Пожалуйста, кто-нибудь подскажет, как я могу сделать это в sql.

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Другой идеей было бы использовать аналитику, что-то вроде этого:

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;

Конечно, это не учитывает ваш, казалось бы, произвольный порядок из вашего вопроса, и не будет работать с дублирующимися максимальными числами.

0 голосов
/ 13 марта 2012

попробуйте это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...