一尘不染

选择最近的记录

sql

如果记录具有几乎相同类型的数据,如何选择最新记录…

例子:

col1       col2          col3              col4
--------------------------------------------------
123         abc          1.1               12345
123         abc          1.1               123445
1234        dsv          2.0               123
1234        dsv          2.0               1233
12345       dsvw         1.2               1234

col4与其余列比较时的最大值。

看到row1和row2数据看起来相似,但是我们需要基于col4的最新数据。

与row3和row4相同,数据看起来相似,但我们需要基于col4的最新数据。

所需的输出是:

col1    col2   col3   col4
----------------------------
123     abc    1.1    123445
1234    dsv    2.0    1233
12345   dsvw   1.2    1234

阅读 171

收藏
2021-05-23

共1个答案

一尘不染

使用:

WITH example AS (
   SELECT t.*,
          ROW_NUMBER() OVER (PARTITION BY t.col1
                                 ORDER BY t.col4 DESC) AS rnk
     FROM YOUR_TABLE t)
SELECT e.*
  FROM example e
 WHERE e.rnk = 1

..或者:

SELECT e.*
  FROM (SELECT t.*,
               ROW_NUMBER() OVER (PARTITION BY t.col1
                                      ORDER BY t.col4 DESC) AS rnk
          FROM YOUR_TABLE t) e
 WHERE e.rnk = 1

CTE对派生表方法没有提供任何优化。

2021-05-23