declare @c numeric(10,2)
declare @qtyin int 
declare @qtyout int
declare @TV numeric(10,2)set @qtyin = 2673
set @qtyout = 1373
set @TV = 11531.8select @c = (1373/2673) * @TV * 100print @c-----------------------
结果:0.00

解决方案 »

  1.   

    declare @c numeric(10,2)
    declare @qtyin int 
    declare @qtyout int
    declare @TV numeric(10,2)set @qtyin = 2673
    set @qtyout = 1373
    set @TV = 11531.8select @c = (1373/2673) * @TV * 100print @c
      

  2.   

    declare @c numeric(10,2)
    declare @qtyin int 
    declare @qtyout int
    declare @TV numeric(10,2)set @qtyin = 2673
    set @qtyout = 1373
    set @TV = 11531.8select @c = (1373*1.0/2673) * @TV * 100print @c
      

  3.   

    int/int型要小心...
    最好1.0*a/b 來代替a/b
      

  4.   

    declare @c numeric(10,2)
    declare @qtyin int 
    declare @qtyout int
    declare @TV numeric(10,2)set @qtyin = 2673
    set @qtyout = 1373
    set @TV = 11531.8select @c = (1373/2673) * @TV * 100print @c
    或者
    declare @c numeric(10,2)
    declare @qtyin int 
    declare @qtyout int
    declare @TV numeric(10,2)set @qtyin = 2673
    set @qtyout = 1373
    set @TV = 11531.8select @c = (cast (1373 as decimal)/2673) * @TV * 100print @c
      

  5.   

    declare @c numeric(10,2)
    declare @qtyin int 
    declare @qtyout int
    declare @TV numeric(10,2)set @qtyin = 2673
    set @qtyout = 1373
    set @TV = 11531.8set @c =(convert(numeric(10,2), @qtyout)/@qtyin )* @TV * 100print @c或者
    declare @c numeric(10,2)
    declare @qtyin int 
    declare @qtyout int
    declare @TV numeric(10,2)set @qtyin = 2673
    set @qtyout = 1373
    set @TV = 11531.8set @c =( @qtyout/(convert(numeric(10,2),@qtyin ))* @TV * 100print @c
    或者declare @c numeric(10,2)
    declare @qtyin numeric(10,2) 
    declare @qtyout int
    declare @TV numeric(10,2)set @qtyin = 2673
    set @qtyout = 1373
    set @TV = 11531.8set @c =(convert(numeric(10,2), @qtyout)/@qtyin )* @TV * 100print @c结果为:
    592336.75原因int类型与int类型计算,得到int类型,(1373/2673)得到小数为0.51...现于为整数类型,结果为0,要想得到小数,那只有将其一个整数类型转为numerice(10,2),SQL运算时将结果以numeric(10,2)保存