select A.商品名称,sum(A.商品总量)-sum(B.出库数量)
from AAA A,BBB B
where A.商品名称=B.商品名称
group by A.商品名称

解决方案 »

  1.   

    select 商品名称,a.商品总量-b.出库数量 as 库存 from AAA inner join 
    (select 商品名称,sum( 出库数量)出库数量 from BBB group by 商品名称)b on a.商品名称=b.商品名称
      

  2.   

    更正:
    select 商品名称,a.商品总量-b.出库数量 as 库存 from a inner join 
    (select 商品名称,sum( 出库数量)出库数量 from BBB group by 商品名称)b on a.商品名称=b.商品名称
      

  3.   

    select aaa.商品名称,商品总量-ck as 剩余数量 from aaa,
    (select 商品名称,sum(出库数量) as ck from bbb
    group by 商品名称) as b
    where a.商品名称=b.商品名称
      

  4.   

    select a.商品名称,sum(a.商品总量)-sum(a.出库数量)
    from AAA a,BBB b
    where a.商品名称=b.商品名称
    group by a.商品名称,b.商品名称
      

  5.   

    select a.id ,a.j - sum(b.c) as num from test1 a,test2 b where a.id = b.id group by a.id,a.j
    test1 ---表1
    test2 ---表2
      

  6.   

    select AAA.商品名称,sum(AAA.商品总量)-sum(BBB.出库数量)
    from AAA ,BBB 
    where AAA.商品名称=BBB.商品名称
    group by AAA.商品名称
      

  7.   

    declare @AAA table (商品名称  varchar(10), 商品总量  int)
    insert into @AAA values('A',100)
    insert into @AAA values('B',120)declare @BBB table (商品名称 varchar(10), 出库数量 int)
    insert into @BBB values('A', 10)
    insert into @BBB values('A', 20)
    insert into @BBB values('B', 10)
    insert into @BBB values('B', 20)
    insert into @BBB values('B', 30)select TA.商品名称,A-B AS 剩余数量 FROM
    (select 商品名称,sum(商品总量) AS A
    from @AAA 
    group by 商品名称)TA,
    (select 商品名称,sum(出库数量) AS B
    from @BBB 
    group by 商品名称)TB
    where TA.商品名称=TB.商品名称
      

  8.   

    看来大家普遍是Niguna(幽灵) 那样想的,其实那是错误的
      

  9.   

    幽灵,你看看
    select AAA.商品名称,AAA.商品总量,BBB.出库数量, AAA.商品总量-BBB.出库数量
    from AAA ,BBB 
    where AAA.商品名称=BBB.商品名称
    的结果就能想出错在哪了。
      

  10.   

    小马,只看表的内容,aaa表中商品名称是不重复的,而且,就其字段名称“商品总量”来看也不应该还有重复的商品名称,所以我想把你的TA部分去掉也行。
      

  11.   

    select 商品名称,sum(商品总量) from (select * from aaa union all select 商品名称,-出库数量 from bbb) group by 商品名称
      

  12.   

    select 商品名称,sum(商品总量) 剩余数量 from (select * from @aaa union all select 商品名称,-出库数量 from @bbb) a group by 商品名称
      

  13.   

    CABO(白椒腊肉)写的错了,但只要更正一下就可行;select A.商品名称,a.商品总量-sum(B.出库数量) from test1 A,test2 B
    where A.商品名称=B.商品名称 group by A.商品名称,a.商品总量
      
     test1---AAA
     test2---BBB
      

  14.   

    这些好象没有一个是对的,我试出了一个,检验过,是正确的!
    select AAA.商品名称,
    sum(AAA.商品总量)/count(BBB.商品名称)-sum(BBB.出库数量)
    from AAA,BBB 
    where AAA.商品名称=BBB.商品名称
    group by BBB.商品名称相信我,你自己可以试一试!
      

  15.   

    select 商品名称,sum(商品总量) 剩余数量 from (select * from @aaa union all select 商品名称,-出库数量 from @bbb) a group by 商品名称个人认为上述代码比较好
      

  16.   

    to;楼主
    若表AAA 中商品名称可重复用我的方法
    若不重复用大力的更方便
    to:19191919(红围巾) ,同意你的说法,因为我不知道楼主的表AAA的具体结构
    只能来个通用版了
      

  17.   

    select 商品名称,sum(商品总量) from (select aa,商品总量 from aaa union all select 商品名称,-1*出库数量 商品总量 from bbb) group by 商品名称
      

  18.   

    哦,少了个别名select 商品名称,sum(商品总量) from (select aa,商品总量 from aaa union all select 商品名称,-1*出库数量 商品总量 from bbb) a group by 商品名称
      

  19.   

    to MeteorOnNet(大狼) 
      你的这个SQL语句有一点缺陷,要是这样的情况就不对了
    表一(AAA)
    商品名称  商品总量
      A         100
      B         120
      C         200表二(BBB)
    商品名称  出库数量
       A         10
       A         20
       B         10
       B         20
       B         30
    算出商品A,B,C目前还剩多少
      

  20.   

    表一(AAA)
    商品名称  商品总量
      A         100
      B         120表二(BBB)
    商品名称  出库数量
       A         10
       A         20
       B         10
       B         20
       B         30用一条SQL语句算出商品A,B目前还剩多少?
    ---->select AAA.商品总量-B.总出库数量
    from AAA , 
    (select sum(出库数量) 总出库数量, 商品名称 from BBB group by 商品名称) B
    where AAA.商品名称 = B.商品名称
      

  21.   

    select a.商品名称, 剩余数量 = a.商品总量 - b.出库数量
    from
    AAA a,
    (select 商品名称, 出库数量 = sum(出库数量) from BBB group by 商品名称) b
    where a.商品名称 = b.商品名称
    /*绝对正确*/
      

  22.   

    to cocoafox(阿菜) and pengdali(大力) 
    有道理:下面我改进一下,还有我说过的话,多谢指点!
    //////////////////////////////////
    select a.商品名称 , a.商品总量 - b.出库数量 as 剩余数量
    from AAA a,
    (select 商品名称, 出库数量 = sum(出库数量) from BBB group by 商品名称) b
    where a.商品名称 * = b.商品名称 
    //////////////////////////////////
    在where子句加一个左外部连接!
      

  23.   

    第一次来这儿,细看了一下每一个朋友的代码
       发现思路一共有三种:
    1。 CABO(白椒腊肉)类,很多人就是这样想的,不过有一个问题是
    不使用内联语句就简单的判断两个列值相同然后就输出结果2。小马哥类,AAA表中是否有相同的商品我们可以不管思路都一样!
    如果AAA表中的商品在BBB表中都一定能卖出的话那么这种思路就是对的
       我来说说这种思路:先分别使用两个SELECT语句把AAA表和BBB表中的
    商品相同的行合并(等于重新生成了两个表并且商品名全部都不同了),
    然后再使用INNER JOIN语句联结两个表,但是INNER JOIN有一个毛病是
    两个表中一定要有商品名列列值相同才行!比如说AAA表中有一种商品名
    在BBB表中没有那个这个商品就不会出现在结果中了select na1,convert(int,pr1)-convert(int,pr2) from
    (select na1, pr1=sum(convert(int,pr1)) from a group by na1) as j
    inner join 
    (select na2, pr2=sum(convert(int,pr2)) from B group by na2) as p 
    on j.na1=p.na23。我和大力的算法:把两个表用UNION语句联结起来(形成一个新表)并且
    把BBB表中的出货数转为负数,然后再用一个聚合函数加上GROUP BY就可以了!
    这样即使AAA表中有商品一个都没买出也会记录在结果中!而且AAA表中是否有
    相同的商品也可以不管:)elect na1,pr1=sum(pr1) from (select * from a union all select na2,pr2=-convert(int,pr2) from b) a group by a.na1另外: MeteorOnNet(大狼)的思路我一点都没懂:(
    我表成两个表 
    A
      na1  pr1
       c   100
       d   100
       c   10
       f   10B
      na2  pr2
       c    10 
       c    10
       d    1