我正在尝试根据目标是在01/01/2018来计算目标
目标被计算为目标/ 5(天)*每月的网络天数,然后根据开始日期1/3(已满的2/3)降低目标
下面的代码运行良好,但是,这是从今天开始计算的目标,我需要对此进行修正,以便从2018年1月1日开始计算。
我将然后为每个未来每月创建一个新列。
当我修改代码并输入日期而不是获取日期时,出现以下错误
当开始日期<铸造( '2018年1月1日' 作为日期)-150然后浇铸(WeeklyIssueTarget为数字(17,2))/ 5 * 23
消息206,级别16,状态2,行1 操作数类型冲突:日期与int不兼容
任何帮助将不胜感激
谢谢
Select *,
case when StartDate is null then cast(WeeklyIssueTarget as numeric(17,2))/5*23
when StartDate < GETDATE()-150 then cast(WeeklyIssueTarget as numeric(17,2))/5*23
when StartDate < GETDATE()-120 then (cast(WeeklyIssueTarget as numeric(17,2))/5*23)/3*2
when StartDate < GETDATE()-90 then (cast(WeeklyIssueTarget as numeric(17,2))/5*23)/3*1
when StartDate < GETDATE()-89 then 0 end as Jan18
from Details
答案 0 :(得分:1)
getdate()
返回datetime
,而不是date
。因此,同样也要强制转换为datetime
,而不是强制转换为date
。
...
... cast('2018-01-01' as datetime) ...
...
为安全起见,更冗长,您可能需要考虑使用dateadd()
进行计算。