create table 出库表(物品编号 varchar(10), 出库数量 int, 出库时间 datetime)
insert into 出库表 values('A01' ,     10,       '2009-03-26') 
insert into 出库表 values('A02' ,     5 ,       '2009-03-26') 
insert into 出库表 values('A01' ,     3 ,       '2009-03-26') 
create table 入库表(物品编号 varchar(10), 入库数量 int, 入库时间 datetime)
insert into 入库表 values('A01' ,     5 ,       '2009-03-26') 
goselect m.物品编号 , 
       m.出库数量 - isnull(n.入库数量,0) 数量统计,
       m.出库时间 时间
from
(
  select 物品编号 , sum(出库数量) 出库数量 , 出库时间 from 出库表 group by 物品编号 , 出库时间
) m
left join 入库表 n
on m.物品编号 = n.物品编号 and m.出库时间 = n.入库时间 drop table 出库表,入库表/*
物品编号       数量统计        时间                                                     
---------- ----------- ------------------------------------------------------ 
A01        8           2009-03-26 00:00:00.000
A02        5           2009-03-26 00:00:00.000(所影响的行数为 2 行)
*/

解决方案 »

  1.   

    select a.物品编号,数量统计=sum(a.入库数量-isnull(b.出库数量,0)),max(入库时间) 时间 from 入库表 a left join 出库表 b on a.物品编号=b.物品编号 group by a.物品编号
      

  2.   

    select  
        a.物品编号,a.入库数量-isnull(b.出库数量,0) as 数量统计,a.入库时间 as 时间
    from 
        (select 物品编号,入库时间,sum(入库数量) as 入库数量 from 入库表 group by 物品编号,入库时间) a
    left join
        (select 物品编号,出库时间,sum(出库数量) as 出库数量 from 出库表 group by 物品编号,出库时间) b
    on
        a.入库时间=b.出库时间 and a.物品编号=b.物品编号
      

  3.   


    select a.物品编号,数量统计=数量统计-isnull(出库数量,0),时间 from
    (select 物品编号,数量统计=sum(入库数量),时间=max(入库时间) from 入库表 group by 物品编号)a
    left join 出库表 b on a.物品编号=b.物品编号
      

  4.   

    a,b 什么意思?起的别名?!
    还是对应w我那俩表的?
    没这么用过哈