如何找到最后 5 个日期? SQL 开发

How to find the last 5 dates? SQL Dev

每个发件人(亚马逊除外)负责每天发送一份文件。下面的代码将显示所有发件人和他们发送文档的日期。我将能够判断发件人是否没有每天发送报告。我的问题是...如果我只想要每个发件人的最后 5 个日期,我将如何显示?

例如.. 我想查找 Walmart、Target 和所有其他发件人发送文档的最后 5 个日期。

select distinct sender, 
SUBSTR(file_name, 3, 8) date_sent 
from FILE_HEADER hdr, 
 FILE_LINES fl
where hdr.header_id = fl.header_id
and sender not 'Amazon'
order by  
1 , 2 desc

假设您可以访问 ROW_NUMBER(尽管它至少已经可用了 10 年),这应该可以解决问题。

SELECT *
FROM
(
  SELECT
    sender, SUBSTR(file_name, 3, 8), date_sent,
    ROW_NUMBER() OVER (PARTITION BY sender ORDER BY date_sent desc) rn
  FROM FILE_HEADER
) 
WHERE rn <= 5
ORDER BY sender, date_sent desc;