select isnull(a.产品编号,b.产品编号) 产品编号,
       isnull(a.批号,b.批号)批号,
       sum(a.入库数)-sum(b.发货数) 库存数
from a,b where a.产品编号=b.产品编号 and a.批号=b.批号
group by 产品编号,批号

解决方案 »

  1.   

    select isnull(a.产品编号,b.产品编号) 产品编号,
           isnull(a.批号,b.批号)批号,
           sum(a.入库数)-sum(b.发货数) 库存数
    from a,b where a.产品编号=b.产品编号 and a.批号=b.批号
    group by a.产品编号,a.批号,b.产品编号,b.批号
      

  2.   

    select a.产品编号,a.批号,(a.入库数-b.发货数) as 库存数 from
    (
    select 产品编号,批号,sum(入库数) 入库数 from 表a
     group by 产品编号,批号
    ) as a(
    select 产品编号,批号,sum(发货数) 发货数 from 表b
     group by 产品编号,批号
    ) as b
    where a.产品编号=b.产品编号
      and a.批号=b.批号
      

  3.   

    SELECT AA.产品编号,AA.批号,AA.INSUM-BB.OUTSUM FROM
    (SELECT 产品编号,批号,SUM(入库数) AS INSUM FROM A GROUP BY 产品编号,批号) AA,
    (SELECT 产品编号,批号,SUM(发货数) AS OUTSUM FROM B GROUP BY 产品编号,批号) BB
    WHERE AA.产品编号=产品编号 AND AA.批号=BB.批号具体是否LEFT JOIN或RIGHT JOIN就看你的实际情况了
      

  4.   

    SELECT COALESCE(aa.产品编号,bb.产品编号) 产品编号, COALESCE(aa.批号,bb.批号) 批号,isnull(入库,0) - isnull(发货数,0) 库存数
    FROM (select 产品编号,批号 ,sum(入库数) 入库 from a group by 产品编号,批号 ) aa
    full join (select 产品编号,批号 ,sum(发货数) 发货数 from b group by 产品编号,批号 ) bb on aa.产品编号=bb.产品编号 and aa.批号=bb.批号
      

  5.   

    更正一下.:)select isnull(a.产品编号,b.产品编号) 产品编号,
           isnull(a.批号,b.批号)批号,
           sum(a.入库数)-sum(b.发货数) 库存数
    from a full join b on a.产品编号=b.产品编号 and a.批号=b.批号
    group by a.产品编号,a.批号,b.产品编号,b.批号
      

  6.   

    select a.产品编号,a.批号,isnull(a.入库数,0)-isnull(b.出货数) as 库存数
    from
     (select 产品编号,批号,sum(入库数) as 入库数 from tba group by 产品编号,批号) a
    ,(select 产品编号,批号,sum(出货数) as 出货数 from tbb group by 产品编号,批号) b
    where a.产品编号=b.产品编号 and a.批号=b.批号
      

  7.   

    错了一点:
    select a.产品编号,a.批号,isnull(a.入库数,0)-isnull(b.出货数) as 库存数
    from
     (select 产品编号,批号,sum(入库数) as 入库数 from tba group by 产品编号,批号) a
     left join 
     (select 产品编号,批号,sum(出货数) as 出货数 from tbb group by 产品编号,批号) b
     on a.产品编号=b.产品编号 and a.批号=b.批号
      

  8.   

    to 蚂蚁,zjcxc:二位的方法都试过了,得不到正确答案.似乎是group by 子句的问题
    还请继续帮忙.
      

  9.   

    写错了一点东西,更正如下:
    begin tran
    create table 表a(产品编号 varchar(10),批号 int,入库数 money)
    insert into 表a(产品编号,批号,入库数)
    values('001',12,100)
    insert into 表a(产品编号,批号,入库数)
    values('001',12,200)
    insert into 表a(产品编号,批号,入库数)
    values('001',11,200)
    insert into 表a(产品编号,批号,入库数)
    values('002',10,300)create table 表b(产品编号 varchar(10),批号 int,发货数 money)
    insert into 表b( 产品编号,批号,发货数)
    values('001',12,50)
    insert into 表b( 产品编号,批号,发货数)
    values('001',11,100)select a.产品编号,a.批号,isnull(a.入库数,0)-isnull(b.发货数,0) as 库存数
    from
     (select 产品编号,批号,sum(入库数) as 入库数 from 表a group by 产品编号,批号) a
     left join 
     (select 产品编号,批号,sum(发货数) as 发货数 from 表b group by 产品编号,批号) b
     on a.产品编号=b.产品编号 and a.批号=b.批号
    rollback tran
      

  10.   


    产品编号       批号          库存数  
    aa             bb            ccSELECT min(aa) as aa, min(bb) as bb, sum(cc) as cc FROM 
    (
    SELECT   min(aa) as aa, min(bb) as bb, sum(cc) as cc FROM aa
    GROUP BY aa,bb
    UNION ALL
    SELECT   min(aa) as aa, min(bb) as bb, sum(cc) as cc FROM ab
    GROUP BY aa,bb
    )
    as a
    GROUP BY aa,bb