这与特定月份的最后一天无关。
我正在尝试计算 CAGR 比率(复合年(月)增长率)。因此,在最后输入的日期,特定月份总是有最大值,这意味着该值只会增加。
但是,用户可能不是每天都输入(包括每月的最后一天)。因此,我必须知道用户在特定月份最近输入的日期是哪个日期。
请参考附图。
我一直对 stackoverflow 中的优秀人才感到满意!太感谢了 !
下面是 SQL Server 的语法:
WITH
CTE
AS
(
SELECT
dt
,Value
,ROW_NUMBER()
OVER (PARTITION BY DATEDIFF(month, '2001-01-01', dt) ORDER BY dt desc) AS rn
FROM YourTable
)
SELECT
dt
,Value
FROM CTE
WHERE rn = 1
;
一般情况下,查找top-n-per-group
或greatest-n-per-group
。
有关其他变体的更详细答案,请参见:https ://dba.stackexchange.com/questions/86415/retrieving-n-rows-per-group
SELECT top(1) *
FROM table
WHERE dt >= 01/02/2016
AND dt <= 29/02/2016
ORDER BY value DESC