0

我有这个选择:select isnull(Pricea,0)-isnull(Priceb,0) as Differences 列的格式是十进制(12,4)。我的问题是:只有当它们大于 0 时,我才能以某种方式返回小数?如果结果将是例如 4.0000 似乎令人困惑,所以我只想在小数大于 0 时才显示小数。这可能吗?

4

2 回答 2

2

当天花板(Num)=地板(Num)时,数字为整数

select case when ceiling(Num) = floor(Num) 
       then      CONVERT(varchar, CAST(Num as decimal))
       else      CONVERT(varchar, Num) 
       end
于 2012-12-07T10:06:07.023 回答
1

它只是在 MangementStudio 中为数据类型显示的那种蜜蜂。为了调整显示类型,您可以执行类似的操作

Declare @a table  (a decimal(12,4),b decimal(12,4))
insert into @a Values(12.45,10.45)
insert into @a Values(12.45,10.4512)
insert into @a Values(12.4512,10.4500)

Select Cast(Case when a-b<>Floor(a-b) then Cast(a-b as float) else  a-b end as Varchar(30)) as Diff
from @a
于 2012-12-07T10:06:05.710 回答