【发布时间】:2015-06-17 19:39:33
【问题描述】:
我正在从另一个表中传递一系列从 -1 到 1 的双精度值。如果值为正,我想让它成为它与 1 之间的差异(即 0.2 将变为 0.8)。如果值为负数,我希望它是现在大于 1 的 delta 负数(即 0.2 将是 1.2)。
由于某种原因,当我这样做时,它会从上一个表中获取值并使它们符合第一个 WHEN 的条件(因此在此设置中,所有传入的值都被设为正值并达到第一个 WHEN )。
为什么这不起作用?
SELECT SnapshotDay
,SnapshotHour
,CASE
WHEN Delta > 0.0 THEN (1 - Delta)
WHEN Delta <= 0.0 THEN (abs(Delta) + 1)
END as Adjust
FROM #Difference
例子:
-0.00118341262814151 --> 0.998816587371859
0.00130811285278974 --> 0.99869188714721
【问题讨论】:
-
delta的数据类型是什么? -
你的例子是想要的结果,还是错误的结果?
-
双;这是不正确的 - D Stanley 的观察让我完全避免了它。