表A:
编号    名称       单位
001    螺内酯片    片
002    速效救心丸  盒
003    培他定片    片
004    肾炎舒片    片
005    去痛片      片表B:
批次号   存货编码   收入数量   发出数量
1       001       10       0
2       002       11       0
3       003       12       0
4       002       13       0
5       001       14       0
6       004       15       0
7       002       16       0
8       001       17       0要求输出:
存货编码      名称        单位     可用数量
001         螺内酯片    片       41
002         速效救心丸  盒       40
003         培他定片    片       12
004         肾炎舒片    片       15*注:其中的可用数量 = B.收入数量 - B.发出数量

解决方案 »

  1.   


    Create table A (
      编号 varchar(10),
      名称 varchar(30),
      单位 varchar(10),
    )
    insert into A values('001','螺内酯片','片')
    insert into A values('002','速效救心丸','盒')
    insert into A values('003','培他定片','片')
    insert into A values('004','肾炎舒片','片')
    insert into A values('005','去痛片','片')
    Create table B(
      批次号 int ,
      存货编码 varchar(10),
      收入数量 int,
      发出数量 int,
    )
    insert into B values(1,'001',10,0)
    insert into B values(2,'002',11,0)
    insert into B values(3,'003',12,0)
    insert into B values(4,'002',13,0)
    insert into B values(5,'001',14,0)
    insert into B values(6,'004',15,0)
    insert into B values(7,'002',16,0)
    insert into B values(8,'001',17,0)select B.存货编码,A.名称,A.单位,
    Sum(B.收入数量-B.发出数量)as 可用数量
    from B left outer join A 
    on B.存货编码=A.编号
    group by B.存货编码,A.名称,A.单位
      

  2.   


    SELECT A.*,sum(B.收入数量-B.发出数量) as 可用数量 from A inner join B on A.编号=B.存货编码 
    group by A.编号,A.名称,A.单位,B.存货编码
      

  3.   


    create table A(编号 varchar(10),名称 varchar(10),单位 varchar(10))
    go
    insert into A values('001','螺内酯片','片')
    insert into A values('002','速效救心丸','盒') 
    insert into A values('003','培他定片','片') 
    insert into A values('004','肾炎舒片','片') 
    insert into A values('005','去痛片','片') 
    gocreate table B(批次号 int,存货编码 varchar(10),收入数量 int,发出数量 int)
    go
    insert into B values(1,'001',10,0) 
    insert into B values(2,'002',11,0) 
    insert into B values(3,'003',12,0) 
    insert into B values(4,'002',13,0) 
    insert into B values(5,'001',14,0) 
    insert into B values(6,'004',15,0) 
    insert into B values(7,'002',16,0) 
    insert into B values(8,'001',17,0)
    go select B.存货编码,A.名称,A.单位,(sum(B.收入数量)-sum(B.发出数量)) as 可用数量
    from A,B 
    where A.编号 = B.存货编码
    group by B.存货编码,A.名称,A.单位drop table A
    drop table B
      

  4.   

    SELECT A.*,sum(B.收入数量-B.发出数量) as 可用数量 from A inner join B on A.编号=B.存货编码 
    group by A.编号,A.名称,A.单位,B.存货编码
      

  5.   

    哇,这麽快就已经有答案了啊,你们不应该用到临时表啊.当然也是解决的办法之一,
     
    可惜我来晚了,不知道我重复回答一次楼主是否给分.select tt.编号,tt.名称,tt.单位,bb.* 
    from 表A tt,
        (select 存货编码,sum(收入数量-发出数量) as 收入数量 from 表B group by 存货编码) bb
    where tt.编号=bb.存货编码
    以上可以完全解决的;
      

  6.   

    select a.编号,a.名称,a.单位,sum(isnull(B.收入数量,0)- isnull(B.发出数量,0)) as 可用数量 
    from a inner join b on a.编号=b.存货编码
    group by a.编号,a.名称,a.单位