sql - 选择基于当前日期的值,该日期距某个日期超过 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 年,等等。
非常感谢您的帮助!
解决方案
我想你可以这样使用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
请注意,案例已排序。
推荐阅读
- ios - 为什么 concurrentQueue.sync 不会导致死锁
- java - 为什么嵌套类的私有成员可以在外部类中访问
- msbuild - 如何使用 MSBuild 验证属性?
- algorithm - 知道距离寻找第二种颜色
- typescript - 将 TypeScript 包含到使用多个组件的网页中
- linux - 安装两个依赖于不同版本 Qt 的应用程序
- three.js - 如何实现线条逐渐消失
- c# - 在 Unity 2D 中导致玩家受到伤害
- flutter - How to create a custom AppBar widget?
- python - Python _tkinter.TclError from root.mainloop() after calling root.destroy()