Sql 如何从Oracle中的另一列中按最大值选择行

Sql 如何从Oracle中的另一列中按最大值选择行,sql,oracle,Sql,Oracle,我在OracleTable1和Table2中有两个数据集。 当我运行此命令时: SELECT A.ID, B.NUM_X FROM TABLE1 A LEFT JOIN TABLE2 B ON A.ID=B.ID WHERE B.BOOK = 1 它返回这个 ID NUM_X 1 10 1 5 1 9 2 2 2 1 3 20 3 11 我想

我在Oracle
Table1
Table2
中有两个数据集。 当我运行此命令时:

SELECT A.ID, B.NUM_X
FROM TABLE1 A
LEFT JOIN TABLE2 B ON A.ID=B.ID
WHERE B.BOOK = 1
它返回这个

ID        NUM_X
1          10
1           5
1           9
2           2
2           1
3           20
3           11
我想要的是
DISTINCT ID
,其中
NUM\u X
MAX
值,类似这样:

ID          NUM_x
1            10
2             2
3            20

您可以使用聚合:

SELECT A.ID, MAX(B.NUM_X)
FROM TABLE1 A LEFT JOIN
     TABLE2 B
     ON A.ID = B.ID
WHERE B.BOOK = 1
GROUP BY A.ID;
如果您需要其他列,我建议使用窗口函数:

SELECT A.ID, MAX(B.NUM_X)
FROM TABLE1 A LEFT JOIN
     (SELECT B.*,
             ROW_NUMBER() OVER (PARTITION BY ID ORDER BY NUM_X DESC) as seqnum
      FROM TABLE2 B
     ) B
     ON A.ID = B.ID AND B.seqnum = 1
WHERE B.BOOK = 1
GROUP BY A.ID;