Sql 如何从Oracle中的另一列中按最大值选择行
我在OracleSql 如何从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 我想
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;