首页 > 解决方案 > 基于另一个最大值的列的最大值.SQL

问题描述

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

所以假设我有这个:

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 FROM table1 FULL JOIN table2 ON (table1.id = table2. id) WHERE table1.load_no = (SELECT max(table1.load_no) FROM table1) OR table2.load_no = (SELECT max(table2.load_no) FROM table2) AND table1.load_seq_no = (SELECT max(table1.load_seq_no) FROM table1)或 table2.load_seq_no = (SELECT max(table2.load_seq_no))}。

而且我只得到最大 load_no 而不是最大 load_seq_no。

标签: sqloraclemax

解决方案


你可以尝试如下

  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)
                      )

推荐阅读