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