我有一张表:
o_id order_no date etc....
4 1 2017-02-01
4 2 2017-02-01
4 3 2017-02-01
我想要的只是每个日期应该获取一个(最高顺序号)记录。 例如,只有order_no 3才能获取o_id 4
输出:
o_id order_no date
4 3 2017-02-01
2 1 .........so on
答案 0 :(得分:0)
规范方法是使用ANSI标准ROW_NUMBER()
函数:
select t.*
from (select t.*,
row_number() over (partition by o_id order by order_no desc) as seqnum
from t
) t
where seqnum = 1;
答案 1 :(得分:0)
如果GROUP BY
在每个MAX
组中唯一{/ 1}},您可以使用order_no
和o_id
select your_table.*
from your_table
join
(
select o_id, max(order_no) maxorder
from your_table
group by o_id
) t on t.o_id = your_table.oid and t.maxorder = your_table.order_no
类似问题
Select corresponding to row from the same table - 您可以找到group by和window function version的性能比较,但是,比较是针对SQL Server的。