我有这个选择:select isnull(Pricea,0)-isnull(Priceb,0) as Differences
列的格式为十进制(12,4)。
我的问题是:只有当它们大于0时我才能以某种方式返回小数?
如果结果将是例如4.0000,这似乎令人困惑,所以我只想在小于0的情况下显示小数。这可能吗?
答案 0 :(得分:2)
当ceiling(Num)= floor(Num)时,数字是整数
select case when ceiling(Num) = floor(Num)
then CONVERT(varchar, CAST(Num as decimal))
else CONVERT(varchar, Num)
end
答案 1 :(得分: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