我有以下的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中执行此操作。
答案 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