看下面这张表 
库存帐本: 
__________________________________________
单据类型 商品名称  数量    仓库   
-------------------------------------------
采购单   电视机    10     1号仓库 
采购单   电视机    10     1号仓库
采购单   洗衣机    10     1号仓库  
销售单   电视机    5      1号仓库   
销售单   洗衣机    5      1号仓库  
____________________________________________我想实现下面商品进销存查询:
进销存查询:
___________________________________________
商品名称    采购数量      销售数量  
-------------------------------------------
电视机      20            5     
洗衣机      10            5   
__________________________________________
如何构建SQL语句才能实现上面的查询(我的后台数据库为ACCESS)

解决方案 »

  1.   

    select 商品名称,
     sum(iif(单据类型='采购单',数量,0)) as 采购数量,
     sum(iif(单据类型='销售单',数量,0)) as 销售数量
    from 库存帐本
    group by 商品名称
      

  2.   


    Declare   @t   table   (a   varchar(10),b   varchar(20),C  int ,d varchar(20) ) 
    insert   into   @t     select  '采购单',       '电视机',         10  ,         '1号仓库'  
    insert   into   @t     select  '采购单',       '电视机',         10  ,         '1号仓库'  
    insert   into   @t     select  '采购单',       '洗衣机',         10  ,         '1号仓库' 
     
    insert   into   @t     select  '销售单',       '电视机' ,        5  ,          '1号仓库'      
    insert   into   @t     select  '销售单',       '洗衣机',         5  ,          '1号仓库' 
    select  t.b , max(case t.a when '采购单' then c end )'采购数量',
               max(case t.a when '销售单' then c end ) '销售数量'
    from (select a, b,sum(c)  c  from @t    Group by a,b ) t   
    Group by t.b
    ---搞一个搞辛苦,,,LZ不给分我都晕了
      

  3.   


    Declare   @t   table   (a   varchar(10),b   varchar(20),C  int ,d varchar(20) ) 
    insert   into   @t     select  '采购单',       '电视机',         10  ,         '1号仓库'  
    insert   into   @t     select  '采购单',       '电视机',         10  ,         '1号仓库'  
    insert   into   @t     select  '采购单',       '洗衣机',         10  ,         '1号仓库' 
     
    insert   into   @t     select  '销售单',       '电视机' ,        5  ,          '1号仓库'      
    insert   into   @t     select  '销售单',       '洗衣机',         5  ,          '1号仓库' 
    select  t.b '商品名称'  , max(case t.a when '采购单' then c end )'采购数量',
               max(case t.a when '销售单' then c end ) '销售数量'
    from (select a, b,sum(c)  c  from @t    Group by a,b ) t   
    Group by t.b
      

  4.   


    select 
    商品名称,
    sum(Case when 单据类型='采购单'  then 数量 else 0 end ),
    sum(Case when 单据类型='销售单'  then 数量 else 0 end )
    from 库存帐本
    group by 商品名称
      

  5.   

    create table test(Dtype varchar2(10),goodsname varchar2(20),amount int,stockname varchar2(10))
    insert into test values('采购单',       '电视机',         10,           '1号仓库')  
    insert into test values('采购单',       '电视机',         10,           '1号仓库') 
    insert into test values('采购单',       '洗衣机',         10,           '1号仓库')     
    insert into test values('销售单',       '电视机',         5,             '1号仓库')       
    insert into test values('销售单',       '洗衣机',         5,             '1号仓库') select goodsname 商品名称,sum(buyamount) 采购数量,sum(salemount) 销售数量
    from (
    select goodsname,sum(amount) buyamount,0 salemount from test
    where dtype='采购单'
    group by goodsname
    union
    select goodsname,0 buyamount,sum(amount) salemount from test
    where dtype='销售单'
    group by goodsname)
    group by goodsname