表A
名称  数量  单位
01    2.5   个表B
名称   领用数   单位
02     5.3     个表B是领用表,在查询表A时想同时显示表B中的领用数,数量字段都是2位小数        select 名称,数量,待领用数量=(数量-(select isnull(sum(领用数),0)from 表B where 表A.名称=表B.名称)from 表A where 名称='01'因为表B中没有01的数据,按道理是2.5-0=2.5,可是结果却是3,自动帮我四舍五入了,请问这语句应该怎么改? 谢谢

解决方案 »

  1.   

    select 名称,数量,
    待领用数量=
    数量-(select isnull(sum(领用数),0)from 表B where 表A.名称=表B.名称)
    from 表A where 名称='01' 
      

  2.   

    检查语句是否有转换int
    select 2.5-(select isnull(sum(1),0) where 1=0)
      

  3.   


    只要表B中有数据就正常,也就是说当isnull转换成0后就会自动四舍五入
      

  4.   


    --trycreate table ta(mc varchar(10),sl numeric(10,2),dw varchar(5))
    insert into ta select '01',2.5,'个'
    go
    create table tb(mc varchar(10),lys numeric(10,2),dw varchar(5))
    insert into tb select '02',5.3,'个'select 名称=isnull(A.mc,B.mc),数量=isnull(A.sl,0),待领用数量=isnull(A.sl,0)-isnull(B.lys,0)  from ta A 
         full join (select mc ,sum(isnull(lys,0)) lys from tb group by mc) B 
           on A.mc = B.mcdrop table ta,tb
      

  5.   

    建议该成select 名称,数量, 
    待领用数量= 
    数量-(select isnull(sum(领用数),0.0)from 表B where 表A.名称=表B.名称) 
    from 表A where 名称='01' 看可以不
      

  6.   

    我也有SQL语句的难题,我怎么提问不了呢?