我想在查询中得到倒数第二个结果,但我不知道如何做到这一点。
我有一个代码,实际上得到了最后一行:
(select sja.descricao
from ldesk.jur_andamento sja
where sja.id_andamento =
(select max(id_andamento)
from ldesk.jur_andamento sja2
where sja2.id_assunto = a1.id_assunto
and data_inclusao in
(select max(data_inclusao)
from ldesk.jur_andamento sja2
where sja2.id_assunto = a1.id_assunto
and data in
(select max(data)
from ldesk.jur_andamento
where id_assunto = a1.id_assunto)))) ult_andamento_descr
在这段代码中,我从jur_andamento表中获得最后一个结果(descricao列),有没有办法获得倒数第二个结果?
3条答案
按热度按时间20jt8wwn1#
使用
DENSE_RANK
解析函数。因此,如果您试图为每个id_assunto
查找按data
然后data_inclusao
然后id_andamento
排序的第二大行,则可以使用用途:如果你想要最大的
data
,然后是data_inclusao
,然后是第二高的id_andamento
,你可以分两步过滤:mctunoxg2#
而不是最大xou可以使用窗口函数ROW_NUMBER获得第二行,或任何其他的问题
fiddle
avwztpqn3#
首先,如前所述,您应该适当地重写代码以使用ORDER BY子句。倒数第二个最大值相当于第二个最小值。
然后,执行这种类型任务的适当函数是row_number()。
但是,也可以使用OFFSET: