如果记录具有几乎相同类型的数据,如何选择最新记录…
例子:
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与其余列比较时的最大值。
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
使用:
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对派生表方法没有提供任何优化。