为什么结果不是SQL的本意???
select 1 as 序号,bh as 编号,mc as 名称,jx as 适用机型,cd as 产地,
数量=sum(sl),金额=sum(sl*dj1)
from
(
select 1 as 序号,bh,mc,jx,sl,dj1,cd from 库存表 where bh = '001904001'
union
select 1 as 序号,bh,mc,jx,-sl,dj1,cd from 领料表 where bh = '001904001'
) a group by bh,mc,jx,cd
having sum(sl)>0 order by 编号
库存表中bh= '001904001'的记录
bh mc jx cd sl
001904001 磨轴 通用 北京 1.000
001904001 磨轴 通用 上海 32.000
001904001 磨轴 通用 北京 1.000
领料表中bh= '001904001'的记录
001904001 磨轴 通用 北京 1.000
001904001 磨轴 通用 上海 13.000
001904001 磨轴 通用 上海 6.000
001904001 磨轴 通用 上海 13.000
001904001 磨轴 通用 北京 1.000
这样语句的功能要求是求出库存中剩余的物品,并按bh,mc,jx,cd 分组汇总,但执行这条语句的结果是:
001904001 磨轴 通用 上海 13.000
也就说北京产地的物品结果是正确的,(1+1-1-1=0) 因为查看剩余的所以这条不显示,但上海产地的不对,也应该是0(32-13-6-13 =0),我看了好久也不清楚错误在哪,结果是0的请大家帮我看看!!!
谢谢!!!