SQL基于另一个最大值的列的最大值

时间:2018-11-23 16:07:43

标签: sql oracle max

我想要基于最大负载数的负载数的最大值和负载序列号的最大值。

所以说我有这个:

id  | load_no |  load_seq_no |
----|---------|--------------|
1   |  200    |     1        |
----|---------|--------------|
2   |  200    |     2        |
----|---------|--------------|
3   |  200    |     3        |
----|---------|--------------|
4   |  300    |     1        |
----|---------|--------------|
5   |  300    |     2        |
----|---------|--------------|
6   |  300    |     2        |
----|---------|--------------|

我要选择这个

id  | load_no |  load_seq_no |
----|---------|--------------|
5   |  300    |     2        |
----|---------|--------------|
6   |  300    |     2        |
----|---------|--------------|

我想在完全加入我的代码的简化版本后得到这些结果

{SELECT coalesce(table1.id,table2.id)AS ID     ,max(table1.load_no)OVER(PARTITION BY table1.id)     ,table1.load_seq_no     ,table2.load_seq_no 从表1 FULL JOIN table2 ON(table1.id = table2.id) 在哪里table1.load_no =     (选择最大(table1.load_no)         来自表1)     或table2.load_no =     (选择最大(table2.load_no)         从表2)     AND table1.load_seq_no =    (选择最大(table1.load_seq_no)         来自表1)     或table2.load_seq_no =(SELECT max(table2.load_seq_no))}。

并且我仅获得最大load_no而不是最大lo​​ad_seq_no。

2 个答案:

答案 0 :(得分:2)

您可以尝试以下操作

  select * from t
  where load_no = (select max(load_no) from t)
  and load_seq_no = (select max(load_seq_no) from t
                            where load_no =(select max(load_no) from t)
                      )

答案 1 :(得分:1)

这符合您的需求吗?

with x as(
select  max(load_seq_no) as mlsn, max(load_no) as mln  from tableName 
where load_no = (select max(load_no) from tableName )
) select * from tableName 
 join x on load_seq_no = mlsn and load_no = mln