表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,自动帮我四舍五入了,请问这语句应该怎么改? 谢谢
名称 数量 单位
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,自动帮我四舍五入了,请问这语句应该怎么改? 谢谢
待领用数量=
数量-(select isnull(sum(领用数),0)from 表B where 表A.名称=表B.名称)
from 表A where 名称='01'
select 2.5-(select isnull(sum(1),0) where 1=0)
只要表B中有数据就正常,也就是说当isnull转换成0后就会自动四舍五入
--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
待领用数量=
数量-(select isnull(sum(领用数),0.0)from 表B where 表A.名称=表B.名称)
from 表A where 名称='01' 看可以不