我在做仓库管理系统,现有进货表in,退货表out,借货表lend,还货表return进货表in   igoods   ihouse  isum
           笔记本   仓库一   10
           铅笔     仓库二   10
           黑板     仓库三   5
           书       仓库一   10退货表out  ogoods   ohouse  osum
           笔记本   仓库一   2
           黑板     仓库三   1借货表lend lgoods   lhouse lsum
           笔记本   仓库一  5
           书       仓库一  6
           铅笔     仓库二  2还货表return  rgoods rhouse rsum
              书     仓库一  3现在想生成一张库存表,就是把 进货表-退货表-借货表+还货表,结果如下:
库存表exist egoods ehouse esum
            笔记本 仓库一  3
            铅笔   仓库二  8
            黑板   仓库三  4
            书     仓库一  7
我不会写,请教高手!万分感谢!

解决方案 »

  1.   

    我想汇总了再库存的嘛,楼上的也是个办法,可我已经都这样做了,所以……
    还是高手给写一下SQL语句吧!
    谢谢!
      

  2.   

    select igoods as egoods,ihouse as ehouse,isum-isnull(osum,0)-isnull(lsum,0)+isnull(rsum,0) as esum from [in] A,[out] B,[lend] C,[return] D where igoods*=ogoods and igoods*=lgoods and igoods*=rgoods
    注意,这只是区分货物名!如果同一物品还能放两个仓库,语句中还得加关于仓库的限定条件!
      

  3.   


    SELECT GOODS,HOUSE,SUM(HOUSE) FROM 
    ((SELECT igoods AS GOODS,Ihouse AS HOUSE,SUM(TABLE1.isum) FROM 进货表IN GROUP BY igoods,Ihouse)
     UNION 
    (SELECT ogoods  AS GOODS,ohouse AS HOUSE,-SUM(Osum) FROM 退货表out GROUP BY ogoods,ohouse)
     UNION
    (SELECT lgoods  AS GOODS,lhouse AS HOUSE,-SUM(Osum) FROM 借货表lend GROUP BY lgoods,lhouse)
     UNION
    (SELECT rgoods  AS GOODS,rhouse AS HOUSE,SUM(Osum) FROM 还货表return GROUP BY rgoods,rhouse)) AS T 
    GROUP BY GOODS,HOUSE
      

  4.   

    上面的语句的些字段名写错了,重新更正如下:SELECT GOODS,HOUSE,SUM(TSUM) FROM 
    ((SELECT igoods AS GOODS,Ihouse AS HOUSE,SUM(TABLE1.isum) AS TSUM FROM 进货表IN GROUP BY igoods,Ihouse)
     UNION 
    (SELECT ogoods  AS GOODS,ohouse AS HOUSE,-SUM(Osum) AS TSUM FROM 退货表out GROUP BY ogoods,ohouse)
     UNION
    (SELECT lgoods  AS GOODS,lhouse AS HOUSE,-SUM(Osum) AS TSUM FROM 借货表lend GROUP BY lgoods,lhouse)
     UNION
    (SELECT rgoods  AS GOODS,rhouse AS HOUSE,SUM(Osum) AS TSUM FROM 还货表return GROUP BY rgoods,rhouse)) AS T 
    GROUP BY GOODS,HOUSE
      

  5.   

    我也会了
    select a,b,sum(c) as cc 
    from (
    select igoods as a ,ihouse  as b ,insum   as c from in
    union 
    select ogoods as a ,ohouse  as  b ,osum*(-1)   as  c from lend
    union 
    select lgoods as a ,lhouse as b lsum*(-1)   as  c from out
    union 
    select rgoods as a ,rhouse as b ,rsum   as  c from return
       )
    group by a,b