如何在SQL中获取最大序列号
这是我表中的数据。我想要的是每个订单号的最大序列号如何在SQL中获取最大序列号,sql,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 最简单的解决方案是使用g
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
最简单的解决方案是使用
groupby
和max
尝试一下:
select [Order No], max(seq), Sta
from myTable
group by [Order No]
最简单的解决方案是使用
groupby
和max
尝试一下:
select [Order No], max(seq), Sta
from myTable
group by [Order No]
只需使用“按订单编号分组”和“按顺序描述”即可获得记录。只需使用“按订单编号分组”和“按顺序描述”即可获得记录。如果需要完整的记录,可以使用
行号
:
SELECT *
FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY Order ORDER BY No_Seq DESC) AS rn
FROM tab) s
WHERE rn = 1;
请不要在列名中使用诸如
Order
和空格之类的关键字。如果您想要完整的记录,可以使用行号
:
SELECT *
FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY Order ORDER BY No_Seq DESC) AS rn
FROM tab) s
WHERE rn = 1;
请不要在列名中使用诸如
Order
和空格之类的关键字。如果您使用的是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 ;
如果您使用的是Oracle数据库,则可以使用行数()分析函数来实现此结果 请尝试以下查询:
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 ;
以下可能是大多数数据库中最有效的解决方案(具有正确的索引): 您也可以通过
分组方式执行此操作:
select orderno, max(seq), sta
from t
group by orderno, sta;
请注意,select
中引用的所有列都是groupby
键或聚合函数的参数。这是正确的SQL。以下可能是大多数数据库中最有效的解决方案(具有正确的索引):
您也可以通过分组方式执行此操作:
select orderno, max(seq), sta
from t
group by orderno, sta;
请注意,select
中引用的所有列都是groupby
键或聚合函数的参数。这是正确的SQL。请将您的问题添加到您正在使用的数据库引擎(MySQL、Postgres、SQL Server、DB2、Oracle等)的标记中。您正在使用哪个数据库引擎?每个订单号Sta是否唯一?请将您的问题添加到您正在使用的数据库引擎的标记中(MySQL、Postgres、SQL Server、DB2、Oracle等)您使用的是哪种数据库引擎?Sta
根据Order No
是唯一的吗?这在大多数RDBMS上不起作用。Sta
没有agg函数,也不在group by中。@Gowdam…遗憾的是,您接受了一个不是标准SQL的答案,在少数数据库中有效,并且推广了糟糕的编程实践。这在大多数RDBMS上都不起作用RDBMSes.Sta
没有agg函数,也不在group by中。@Gowdam…遗憾的是,您接受了一个不符合标准SQL、在少数数据库中工作、并助长了糟糕的编程实践的答案。