首页 > 解决方案 > 选择基于当前日期的值,该日期距某个日期超过 1、2 和 3 年

问题描述

再会,

我希望有人可以用一小行代码来帮助我。我已经建立了一个销售代表佣金报告,对于销售代表赚取的每个项目,都有一个代表第一次将项目作为新业务的日期,例如,项目 A 开始于 2018 年 1 月 1 日。

他们的佣金分解意味着他们在开始日期后的第一年获得 7%(2018 年 1 月 1 日 < 当前日期的 1 年),如果(2018 年 1 月 1 日> 当前日期的 1 年 < 2 年,则为 5%当前日期),如果(2018 年 1 月 1 日 > 当前日期 2 年 < 当前日期 3 年),则为 2.5%。

我已经为整个报告编写了 select 语句,但我正在努力寻找有关这方面的任何信息。

我想我需要一个CASE声明,但我确实告诉 SQL 检查当前日期是否少于一年,或多于一年,但少于 2 年,等等。

非常感谢您的帮助!

标签: sqlsql-serverdate

解决方案


我想你可以这样使用CASE

SELECT
    CASE
        WHEN CURRENT_TIMESTAMP >= DATEADD(YEAR, 2, startdate) THEN 2.5
        WHEN CURRENT_TIMESTAMP >= DATEADD(YEAR, 1, startdate) THEN 5.0
        ELSE 7.0
    END AS commission

请注意,案例已排序。


推荐阅读