item1 20 20.123000 402.46
item2 30 20.000000 600.00
item3 40 20.456700 818.27想要之結果如下
item1 20 20.1230 402.46
item2 30 20.0000 600.00
item3 40 20.4567 818.27見到單價最多小數後四位, 便將全部取四位,
如果單價小數後最多只有三位,就可以全部顯示為小數後三位,
請問應怎樣處理該單價呢?
item2 30 20.000000 600.00
item3 40 20.456700 818.27想要之結果如下
item1 20 20.1230 402.46
item2 30 20.0000 600.00
item3 40 20.4567 818.27見到單價最多小數後四位, 便將全部取四位,
如果單價小數後最多只有三位,就可以全部顯示為小數後三位,
請問應怎樣處理該單價呢?
SELECT SQL_VARIANT_PROPERTY(20.0000,'BaseType') 类型,
SQL_VARIANT_PROPERTY(20.0000,'Precision') 长度,
SQL_VARIANT_PROPERTY(20.0000,'Scale') 位数
--result
/*numeric 6 4
*/
create table tb(id nvarchar(10),c int,dj decimal(18,6),sl decimal(18,2))
insert into tb select 'item1',20,20.123000,402.46
insert into tb select 'item2',30,20.000000,600.00
insert into tb select 'item3',40,20.456700,818.27
go
declare @m int
select max(case when right(convert(varchar,dj),1)<>'0' then 6
when right(convert(varchar,dj),2)<>'00' then 5
when right(convert(varchar,dj),3)<>'000' then 4
when right(convert(varchar,dj),4)<>'0000' then 3
when right(convert(varchar,dj),5)<>'00000' then 2
when right(convert(varchar,dj),6)<>'000000' then 1
end) from tb
if @m=3
select id,c,convert(decimal(18,3),dj),sl from tb
else
select id,c,convert(decimal(18,4),dj),sl from tb
go
drop table tb