2012-12-07 145 views
0

我有這個選擇:select isnull(Pricea,0)-isnull(Priceb,0) as Differences 列的格式是十進制(12,4)。 我的問題是:我可以以某種方式返回小數只有當他們大於0? 如果結果是例如4.0000,這似乎是令人困惑的,所以我想只在大於0時顯示小數。這可能嗎?Sql Server只有在大於0時才顯示小數?

+0

列中的所有值需要的相同的數據類型(儘管可以是'sql_variant')。除非您只是在SSMS中討論adhoc查詢,否則您應該在表示層中理清這一點 –

回答

2

當天花板(NUM)=地板(民),這個數字是一個整數

select case when ceiling(Num) = floor(Num) 
     then  CONVERT(varchar, CAST(Num as decimal)) 
     else  CONVERT(varchar, Num) 
     end 
1

這只是在數據類型的MangementStudio中顯示的一種beeing。 對於剛剛適應顯示器那種你可以做類似

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