0

这与特定月份的最后一天无关。

我正在尝试计算 CAGR 比率(复合年(月)增长率)。因此,在最后输入的日期,特定月份总是有最大值,这意味着该值只会增加。

但是,用户可能不是每天都输入(包括每月的最后一天)。因此,我必须知道用户在特定月份最近输入的日期是哪个日期。

请参考附图。

在此处输入图像描述

我一直对 stackoverflow 中的优秀人才感到满意!太感谢了 !

4

2 回答 2

1

下面是 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-groupgreatest-n-per-group

有关其他变体的更详细答案,请参见:https ://dba.stackexchange.com/questions/86415/retrieving-n-rows-per-group

于 2016-02-15T02:35:15.780 回答
1
SELECT top(1) * 
FROM table 
WHERE dt >= 01/02/2016 
    AND dt <= 29/02/2016 
ORDER BY value DESC
于 2016-02-15T02:46:22.453 回答