我遇到以下公式的问题。目标是根据(CEIDAvgUsage-Usage / Burnrate)预测未来日期。我一直在寻找答案,并且可以找到任何有用的东西。表达式im使用是错误的还是别的。有没有人有建议。
RIGHT (CONVERT (varchar, CASE WHEN (GetDate() + (CEIDAvgUsage - Usage) / BurnRate) < GetDate() THEN GetDate()
ELSE (Getdate() + (CEIDAvgUsage - Usage) / BurnRate)
END, 103), 7)
答案 0 :(得分:0)
究竟出错了什么?你究竟想要它做什么?以下是一些可行的例子:
DECLARE @CEIDAvgUsage INT = 40
, @Usage INT = 20
, @BurnRate INT = 2
SELECT CAST(DATEADD (dd,CASE WHEN (@CEIDAvgUsage - @Usage) / @BurnRate <= 0
THEN 0 ELSE (@CEIDAvgUsage - @Usage) / @BurnRate END,GETDATE()) AS DATE)
答案 1 :(得分:0)
我的猜测是它正在尝试转换此
(CEIDAvgUsage - Usage) / BurnRate)
到日期
这没有任何意义
(GetDate() + (CEIDAvgUsage - Usage) / BurnRate) < GetDate()
您要在日期中添加一个数字,并且双方都有GetDate()
(CEIDAvgUsage - Usage) / BurnRate < 0
如果BurnRate为正
CEIDAvgUsage < Usage
RIGHT ( CONVERT (varchar, CASE WHEN CEIDAvgUsage < Usage THEN GetDate()
ELSE DateAdd(dd, Getdate(), (CEIDAvgUsage - Usage) / BurnRate)
END
, 103)
, 7)