如何获取最新产品版本的所有产品名称?

时间:2015-09-28 14:17:40

标签: sql database oracle

在我的表格中,我有两列prod_name& prod_version_number。我想要最新prod_name的所有prod_version_number

更新:

|prod_name| prod_version_number |
|   abc   |    1                |
|   abc   |    2                |
|   xyz   |    1                |
|   xyz   |    2                |
|   xyz   |    3                |

我想要抓取abc& xyz version_number的{​​{1}}&分别为2。 这是我的尝试。

3

注意我知道SOF的规则。所以你可以撤消反对票。

2 个答案:

答案 0 :(得分:1)

SQL Fiddle

Oracle 11g R2架构设置

CREATE TABLE products ( prod_name, prod_version_number ) AS
          SELECT 'abc', 1 FROM DUAL
UNION ALL SELECT 'abc', 2 FROM DUAL
UNION ALL SELECT 'xyz', 1 FROM DUAL
UNION ALL SELECT 'xyz', 2 FROM DUAL
UNION ALL SELECT 'xyz', 3 FROM DUAL;

查询1

SELECT *
FROM   (
  SELECT p.*,
         ROW_NUMBER() OVER ( PARTITION BY prod_name ORDER BY prod_version_number DESC ) AS rn
  FROM   products p
)
WHERE  rn = 1

<强> Results

| PROD_NAME | PROD_VERSION_NUMBER | RN |
|-----------|---------------------|----|
|       abc |                   2 |  1 |
|       xyz |                   3 |  1 |

答案 1 :(得分:0)

SELECT d.prod_name
从表d
WHERE d.prod_version_number =(SELECT MAX(d1.prod_version_number)FROM table d1 WHERE d1.prod_name = d.prod_name)

通过使用GROUP BY子句不确定是否有更有效的方法来执行此操作,如果找到,则会考虑并稍后编辑。但目前,这应该有效。