具有另一列的两个值的最大版本

时间:2016-08-24 15:13:54

标签: sql plsql oracle-sqldeveloper plsqldeveloper

我想在另一个表格中显示两个值的表的最后一个版本。

Version | Value
12      | ORANGE
11      | ORANGE
11      | BANANA
10      | ORANGE
11      | BANANA

结果应为

11      | ORANGE
11      | BANANA

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

这应符合您的描述:

SELECT * FROM tab
WHERE Version IN
 (
   SELECT MAX(Version) OVER ()
   FROM tab
   -- WHERE Value in ('ORANGE','BANANA') ???
   GROUP BY Version
   -- HAVING COUNT(DISTINCT Value) -- if duplicates exist
   HAVING COUNT(*) = 2 -- only versions with two entries
 )

答案 1 :(得分:0)

这应该有效

SELECT * 
 FROM TABLE
 WHERE VERSION IN (
    SELECT MIN(VERSION) -- GET MIN VERSION FROM MAX
    FROM (
       SELECT MAX(VERSION) as VERSION, 
       FROM TABLE
       GROUP BY VALUE)
    )
  )

这个技巧从Max版本返回最小版本,只有香蕉和橙色共享确切版本号时才有效。 这意味着如果Orange跳过一个版本(从12到13,有12个),而banana正好是12,那么它将无效。