以下为数据库字段:入库表:
编号 数量
001 1000
002 1000
001 2000出库表
编号 数量
001 100
001 200
002 300现想得出编号为001这样的结果:编号 共入库数量 共出库数量 还剩数量
001 3000 300 2700
没什么分了,谢谢。。
编号 数量
001 1000
002 1000
001 2000出库表
编号 数量
001 100
001 200
002 300现想得出编号为001这样的结果:编号 共入库数量 共出库数量 还剩数量
001 3000 300 2700
没什么分了,谢谢。。
sum(入库表.数量) - sum(出库表.数量) as 还剩数量
from 入库表
left join 出库表 on 入库表.编号 = 出库表.编号
where 入库表.编号 = '001'
如果多于两条时,以上的语句所显示入库数量,出库数量都是乘以2的。
如001的型号共入库全部只有3000,它就会显示6000,共出库300它就会显示600。
我晕了,这什么原因,大家都帮忙看下,好不?以下是我的SQL语句:
select 入库表.编号 , sum(入库表.数量) as 共入库数量, sum(出库表.数量) as 共出库数量,
sum(入库表.数量) - sum(出库表.数量) as 还剩数量
from 入库表
left join 出库表 on 入库表.编号 = 出库表.编号
where 入库表.编号 = '001' group by 入库表.编号
001 1000 200
001 2000 100
001 2000 200很明顯匯總後的數量是錯誤的了。所以應該這樣:select A.编号, A.共入库数量, B.共出库数量, (A.共入库数量- ISNULL(B.共出库数量,0)) as 还剩数量
from (
select 入库表.编号 , sum(入库表.数量) as 共入库数量
from 入库表
where 入库表.编号 = '001'
) A
left join (
select 出库表.编号 , sum(出库表.数量) as 共出库数量
from 出库表
where 出库表.编号 = '001'
) on A.编号 = B.编号