有4个表 库存表,出库表,入库表,报废表库存表
物料编号         数量
a                 100
b                 200
c                 120 
d   320
e                 400   
出库表
物料编号         数量
a                 10
e                 40         
入库表
物料编号         数量
a                 20
b                 30 
e                 40   报废表
物料编号         数量
c                 50
要求统计如下
物料编号     入库数          出库数        报废数      库存数
a               20             10            0           100
b               30             0             0           200
c               0              0             50          120
d               0              0             0           320
e               40             40            0           400

解决方案 »

  1.   

    select a.物料编号,isnull(b.数量,0) 入库数,isnull(c.数量,0) 出库数,isnull(d.数量,0) 报废数,a.数量 库存数
    from  库存表 a 
    left join 入库表 b on a.物料编号 = b.物料编号
    left join 出库表 c on a.物料编号 = c.物料编号
    left join 报废表 d on a.物料编号 = d.物料编号
      

  2.   

    select a.物料编号
    c.数量 as 入库数  ,                   
    b.数量 as 出库数 ,                 
    d.数量 as 报废数,             
    isnull(a.数量,0)+isnull(c.数量,0)-isnull(b.数量,0)-isnull(d.数量,0) as 库存数
    from 库存表 a
    left join 出库表 b on a.物料编号=b.物料编号
    left join 入库表 c on a.物料编号=c.物料编号
    left join 报废表 d on a.物料编号=d.物料编号
     
      

  3.   


    select a.物料编号,isnull(b.数量,0) 入库数,isnull(c.数量,0) 出库数,isnull(d.数量,0) 报废数,a.数量 库存数
    from  库存表 a 
    left join 入库表 b on a.物料编号 = b.物料编号
    left join 出库表 c on a.物料编号 = c.物料编号
    left join 报废表 d on a.物料编号 = d.物料编号
      

  4.   

    select a.物料编号,b.数量 as 入库数,c.数量 as 出库数,d.数量 as 报废数,a.数量 as 库存数
    库存表 as a  join 入库表 as b on a.物料编号 = b.物料编号
    join 出库表 as c on a.物料编号 = c.物料编号
    join 报废表 as d on a.物料编号 = d.物料编号
      

  5.   

    应该用left joinelect a.物料编号,b.数量 as 入库数,c.数量 as 出库数,d.数量 as 报废数,a.数量 as 库存数
    库存表 as a  left join 入库表 as b on a.物料编号 = b.物料编号
    left join 出库表 as c on a.物料编号 = c.物料编号
    left join 报废表 as d on a.物料编号 = d.物料编号
      

  6.   


    --库存表 
    create TABLE kuTB(物料编号 NVARCHAR(5) ,                  数量 INT)
    INSERT INTO kuTB
    SELECT 'a',                                   100 
    UNION ALL SELECT 'b',                                   200 
    UNION ALL SELECT 'c',                                   120   
    UNION ALL SELECT 'd',     320 
    UNION ALL SELECT 'e',                                   400        --出库表 
    create TABLE chuTB(物料编号  NVARCHAR(5) ,                  数量 INT)
    INSERT INTO chuTB
    SELECT 'a',                                   10 
    UNION ALL SELECT 'e',                                  40                   
    --入库表 
    create TABLE ruTB(物料编号  NVARCHAR(5) ,                  数量 INT)
    INSERT INTO ruTB
    SELECT 'a',                                   20 
    UNION ALL SELECT 'b',                                30   
    UNION ALL SELECT 'e',                                   40       --报废表 
    create TABLE boTB(物料编号  NVARCHAR(5) ,                  数量 INT)
    INSERT INTO boTB
    SELECT 'c',                                     50 
    select kuTB.物料编号,isnull(ruTB.数量,0) as 入库数,isnull(chuTB.数量,0) as 出库数,isnull(boTB.数量,0) as 报废数,isnull(kuTB.数量,0) as 库存数
    from 
    kuTB 
    left join 
    ruTB on kuTB.物料编号=ruTB.物料编号
    left join 
    chuTB on kuTB.物料编号=chuTB.物料编号
    left join 
    boTB on kuTB.物料编号=boTB.物料编号
    物料编号  入库数         出库数         报废数         库存数
    ----- ----------- ----------- ----------- -----------
    a     20          10          0           100
    b     30          0           0           200
    c     0           0           50          120
    d     0           0           0           320
    e     40          40          0           400