0

私はこれを選択しselect isnull(Pricea,0)-isnull(Priceb,0) as Differences ました:列の形式は10進数(12,4)です。私の質問は次のとおりです。小数が 0 より大きい場合にのみ小数を返すことはできますか? 結果がたとえば 4.0000 になると混乱するように思われるので、0 より大きい場合にのみ小数を表示したいと思います。これは可能ですか?

4

2 に答える 2

2

天井(数)=床(数)の場合、数値は整数です

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 に答える