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見到單價最多小數後四位, 便將全部取四位, 
如果單價小數後最多只有三位,就可以全部顯示為小數後三位, 
請問應怎樣處理該單價呢?

解决方案 »

  1.   

    select ...,convert(decimal(18,4),dj)as dj,... from tb
      

  2.   


    SELECT  SQL_VARIANT_PROPERTY(20.0000,'BaseType') 类型,
    SQL_VARIANT_PROPERTY(20.0000,'Precision') 长度,
      SQL_VARIANT_PROPERTY(20.0000,'Scale') 位数
     
     --result
     /*numeric 6 4
    */
      

  3.   

    数据类型定义中,只能使用常数,因此,最多可以这样:
    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
      

  4.   

    上面段code對我好有幫助, 我做到要的效果啦, 多謝你們的幫忙