Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 筛选行以仅获取最新值_Sql_Oracle_Greatest N Per Group - Fatal编程技术网

Sql 筛选行以仅获取最新值

Sql 筛选行以仅获取最新值,sql,oracle,greatest-n-per-group,Sql,Oracle,Greatest N Per Group,我在表格中有以下数据: ORDERID, PRODUCT, QUANTITY 1, potatoes, 10 1, oranges, 20 2, apples, 10 2, oranges, 15 3, pears, 20 3, peaches, 12 我想查询该表以过滤掉重复的产品(例如橙子),只取最新的(更高的ORDERID)值。这将导致: ORDERID, PRODUCT, QUANTITY 1,

我在表格中有以下数据:

ORDERID, PRODUCT,  QUANTITY
1,       potatoes, 10
1,       oranges,  20
2,       apples,   10
2,       oranges,  15
3,       pears,    20
3,       peaches,  12
我想查询该表以过滤掉重复的产品(例如橙子),只取最新的(更高的ORDERID)值。这将导致:

ORDERID, PRODUCT,  QUANTITY
1,       potatoes, 10
2,       apples,   10
2,       oranges,  15
3,       pears,    20
3,       peaches,  12

@Dudu给出的答案的另一种选择是子查询以查找每个产品的最大订单ID,然后将其连接回原始表以限制您要查看的记录

SELECT t1.ORDERID,
       t1.PRODUCT,
       t1.QUANTITY
FROM yourTable t1
INNER JOIN
(
    SELECT PRODUCT, MAX(ORDERID) AS MAX_ORDERID
    FROM yourTable
    GROUP BY PRODUCT
) t2
    ON t1.PRODUCT = t2.PRODUCT AND
       t1.ORDERID = t2.MAX_ORDERID

@Dudu给出的答案的另一种选择是子查询以查找每个产品的最大订单ID,然后将其连接回原始表以限制您要查看的记录

SELECT t1.ORDERID,
       t1.PRODUCT,
       t1.QUANTITY
FROM yourTable t1
INNER JOIN
(
    SELECT PRODUCT, MAX(ORDERID) AS MAX_ORDERID
    FROM yourTable
    GROUP BY PRODUCT
) t2
    ON t1.PRODUCT = t2.PRODUCT AND
       t1.ORDERID = t2.MAX_ORDERID