为什么我的输出不完全是2.39?

时间:2016-06-14 08:32:50

标签: sql decimal

我需要输出2位数字,如2.39,但我得到了输出2.3980815347721822541966

这是我不明白的问题。

这是我的查询。

SELECT M.Description,A.Target,A.Actual,
  CASE
    WHEN A.Target > 0 THEN  A.Actual / CONVERT(DECIMAL(18,2),A.Target) 
    ELSE 0
  END Achievement
FROM (
  SELECT * FROM ProcessData PD 
  WHERE
    ProcessYear = 2015 AND ProcessMonth = 1
    AND DepotID = 6 AND ModuleID =1
) A 
LEFT OUTER JOIN Measure M
  ON M.ID = A.MeasureID

1 个答案:

答案 0 :(得分:2)

您需要格式化整个表达式而不仅仅是除数:

所以而不是

THEN  A.Actual / CONVERT(DECIMAL(18,2),A.Target) 

将其更改为:

THEN  CONVERT(DECIMAL(18,2), A.Actual / A.Target) 

请注意,我希望2.398可以舍入到2.40(这是我发布的代码会做的) - 你确定要总是向下舍入吗?如果是这样,请查看ROUND函数。

THEN  CONVERT(DECIMAL(18,2), ROUND(A.Actual / A.Target, 2, 1)