2013-08-22 25 views
0

我有一个问题,当我运行下面的查询时,我得到“PercentageDifference”为99.253731343283500所有我真正想要显示的是99.25,但没有任何额外的提示似乎得到它低或导致错误:显示百分比后只有2个数字

select PlannedMonthName 
    , CountOfPlannedVisits 
    , CountOfPlannedVisitsClosed 
    , CONVERT(DECIMAL(12,2), nullif(CountOfPlannedVisitsClosed, 0)) 
    /CONVERT(DECIMAL(12,2), nullif(CountOfPlannedVisits, 0)) 
     * 100 AS PercentageDifference 
+0

你试过转换为十进制(18,2)也是除法的结果吗? – VsMaX

+0

如果你正在使用MySQL,为什么这也被标记为tsql? – Lamak

+0

是的,尝试(18,2),仍然得到相同的结果! –

回答

1

可以使用round功能如下:

select PlannedMonthName 
    , CountOfPlannedVisits 
    , CountOfPlannedVisitsClosed 
    , round((CONVERT(DECIMAL(12,2), nullif(CountOfPlannedVisitsClosed, 0)) 
       /CONVERT(DECIMAL(12,2), nullif(CountOfPlannedVisits, 0)) 
       * 100 
       ), 2) AS PercentageDifference 

TRUNCATE(X,d)可以用作公:

它返回数字X,截断为D小数位。如果D为0,结果没有小数点或小数部分。 D可能是负数,导致值X的小数点左边的D数字变为零。

+0

非常感谢Ahsan,这似乎有效,但结果现在是99250000000000000。任何有关为什么会发生这种情况的建议? –