[英]How to select rows by max value from another column in Oracle
我在 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_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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.