如果记录具有几乎相同类型的数据,如何选择最新记录...
例子:
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
最佳答案
用:
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对派生表方法没有提供任何优化。