如何通过SQL查询获取最后(n)个日期? [关闭]

问题描述 投票:-2回答:1

例如DECLARE @a = 10;

必需的输出是:

1) 16/5/2020
2) 15/5/2020
3) 14/5/2020
4) 13/5/2020
5) 12/5/2020
6) 11/5/2020
7) 10/5/2020
8) 9/5/2020
9) 8/5/2020
10) 7/5/2020

如果为Declare @b = 5,则输出结果为最后五天。

sql sql-server snowflake-cloud-data-platform
1个回答
1
投票

雪花:

SELECT DATEADD(DAY, -SEQ4(), CURRENT_DATE()) AS generated_date
FROM TABLE(GENERATOR(ROWCOUNT=>10)) 
ORDER BY generated_date desc;

SEQn()函数不能保证没有间隙,因此您需要使用ROW_NUMBER()

WITH tally AS (
   SELECT ROW_NUMBER() OVER(ORDER BY SEQ4()) AS rn
   FROM TABLE(GENERATOR(ROWCOUNT=>10))
)
SELECT DATEADD(DAY, -rn, CURRENT_DATE()) AS generated_date
FROM tally
ORDER BY generated_date
© www.soinside.com 2019 - 2024. All rights reserved.