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

Max version with both values of another Column

我想展示一个 table 的最后一个版本,在另一个上显示两个值。

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

结果应该是

11      | ORANGE
11      | BANANA

有人可以帮助我吗?

这应该符合您的描述:

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
 )

这应该有效

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)
    )
  )

这个技巧 return 你从 Max 版本到 min 版本,只有当 banana 和 orange 共享确切的版本号时它才有效。 这意味着如果 Orange 跳过一个版本(从 11 到 13 而没有 12)而 banana 恰好是 12,它将不起作用。