SELECT  1/9802*1000000  AS VAL
结果 :0
正确的结果是:102(四舍五入)

解决方案 »

  1.   

    cast((sum(case when day(OQCTime)=1 then BadNo else 0 end)/cast(sum(case when day(OQCTime)=1 then floor(TestNo)else 0 end)as decimal(15,0))*1000000)as decimal(15,0)) as [1]
      

  2.   


    SELECT  cast(1./9802*1000000 as int)  AS VAL
      

  3.   

    SELECT  1./9802*1000000  AS VAL
      

  4.   


    SELECT  cast(1.0/9802*1000000 as int)  AS VAL
      

  5.   

    整数 除以 整数 结果还是整数 故而为0SELECT  1.0/9802*1000000  AS VAL改成1.0 就不同了。
      

  6.   

    SELECT   1  /9802.*1000000  AS VAL
      

  7.   


    SELECT  cast(1*1.0/9802*1000000 as decimal(18,0))  AS VAL正如叶子所说,将其中一个转换成小数,SQL会自动将结果也转换成小数。
      

  8.   

    select cast(1.0/9802*1000000 as int) val
      

  9.   


    select convert(int,1.0/9802*1000000) AS val
      

  10.   

    整数和小数的区别~嘻嘻~以后会注意~lz想要哪个数据呢~SELECT   1  /9802.*1000000  AS VAL
    结果:102.000000
    SELECT  1/9802*1000000  AS VAL
    结果:0
    SELECT  cast(1./9802*1000000 as int)  AS VAL
    结果:102