你能告诉我如何在一组记录中选择最高的记录吗?例如,在下表中,我只想获取具有最新日期的记录(粗体)。
典型 | 序列 | 日期 |
---|---|---|
A | 1 | 1900-01-01 |
A | 1 | 2002-01-06 |
A | 1 | 2021-02-01 |
A | 2 | 1900-01-01 |
A | 2 | 2003-12-01 |
A | 2 | 2004-12-05 |
A | 2 | 2021-02-21 |
A | 2 | 2021-01-06 |
A | 3 | 2015-05-17 |
A | 3 | 2017-11-26 |
A | 3 | 2019-11-10 |
A | 3 | 2021-01-01 |
非常感谢!
答案 0 :(得分:0)
首先用group by
SEQ
表,然后将表连接到同一个表并用 ROW_NUMBER()
创建行并按日期排序,然后在输出中显示结果行号为 1 的记录。
WITH resultTable AS (
SELECT
RT.TYP,
RT.SEQ,
RT.DATE,
ROW_NUMBER() OVER ( PARTITION BY RT.SEQ
ORDER BY RT.DATE DESC ) AS [ROW NUMBER]
FROM MyTable RT
Inner JOIN
(
SELECT SEQ
FROM MyTable
GROUP BY SEQ
) LT ON RT.SEQ = LT.SEQ)
select resultTable.TYP,resultTable.SEQ,resultTable.DATE from resultTable
WHERE resultTable.[ROW NUMBER] = 1
答案 1 :(得分:0)
一个简单的窗口函数应该可以做到:
select typ, seq, date
from (
select typ, seq, date,
dense_rank() over (partition by typ, seq order by date desc) as rn
from the_table
) t
where rn = 1
order by typ, seq;