如何在SQL中获取最大序列号

时间:2018-05-06 04:50:07

标签: sql

这是我表格中的数据。我想要的是每个订单号的最大序列号。

Order No seq    Sta
--------------------
32100     1     rd
32100     3     rd
23600     1     rd
23600     6     rd

我想在不使用光标的情况下获得以下结果。

输出:

Order No seq  Sta
-----------------
32100     3   rd
23600     6   rd

5 个答案:

答案 0 :(得分:3)

如果您想要完整记录,可以使用ROW_NUMBER

SELECT *
FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY Order ORDER BY No_Seq DESC) AS rn
      FROM tab) s
WHERE rn = 1;

<强> DBFiddle Demo

请不要在列名中使用Order等关键字和空格。

答案 1 :(得分:1)

最简单的解决方案是将JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0].click();",driver.findElement(By.xpath("//span[@class='download-data-link']//a"))); group by一起使用。

尝试一下:

max

答案 2 :(得分:0)

只需按顺序使用组,按顺序desc排序,您就可以获得记录。

答案 3 :(得分:0)

如果您使用 Oracle 数据库,则可以使用 ROW_NUMBER()分析函数来实现此结果

尝试以下查询:

select 
    * 
from
    (select 
         ROW_NUMBER() OVER (PARTITION BY order_no ORDER BY seq DESC) as "ROW_NUM", 
         order_no, seq, sta
     from 
         Order_Details) temp 
where 
    temp.row_num = 1 ;

<强> Demo

答案 4 :(得分:0)

以下可能是大多数数据库中最有效的解决方案(使用正确的索引):

select t.*
from t
where t.seq = (select max(t2.seq) from t t2 where t2.orderno = t.orderno);

您也可以使用group by

执行此操作
select orderno, max(seq), sta
from t
group by orderno, sta;

请注意,select中引用的所有列都是group by个键或聚合函数的参数。这是正确的SQL。