根据出库表和入库表数据统计生成出入库统计表,SQL语句写法?

比较简易的出入库管理中,出库表包括:产品名称、出库数量、出库时间;入库表包括:产品名称、入库数量、入库时间;我需要得到的是在指定时间段内的每一个产品的入库总数量 出库总数量。
哪位老师可以帮我写出这个SQL语句呢?MS SQL DELPHI2010

类似这样把,没调试,自己调测一下吧

 select * from (select distinct 产品名称 from 出库表 union select distinct 产品名称 from 入库表) t left join
(SELECT SUM(出库数量) 出库,产品名称 出产品名称 from 出库表 where 出库时间>=开始时间 and 出库时间<=结束时间 group by 产品名称) t1
on t.产品名称=t1.出产品名称
left join
(SELECT SUM(入库数量) 入库,产品名称 入产品名称 from 入库表 where 入库时间>=开始时间 and 入库时间<=结束时间 group by 产品名称) t2
on t.产品名称=t2.入产品名称

SELECT SUM(出库数量),产品名称 from 出库表 where 出库时间>=开始时间 and 出库时间<=结束时间 group by 产品名称

入库也一样

最后要放在一张表中体现出来,如果出库表中某产品有出库记录,入库表没有它的记录,这样如何合并呢?

outer join two result sets

sql:='delete from pdtcrk';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sql);
adoquery1.ExecSQL;
adoquery1.Close;
adoquery1.SQL.Clear;
sql:='select * from (select distinct pdtname from outlib union select distinct pdtname from inlib) t left join';
sql:=sql+'(SELECT SUM(outnum) as cknum,pdtname as cpn from outlib where outdate>=:d1 and outtime<:d2 group by pdtname) t1';
sql:=sql+'on t.pdtname=t1.cpn left join(SELECT SUM(innum) as rknum,pdtname as rpn from inlib where indate>=:d1 and indate<:d2 group by pdtname) t2';
sql:=sql+'on t.pdtname=t2.rpn';
adoquery1.SQL.Add(sql);
adoquery1.Parameters[0].Value:=trunc(d1.DateTime);
adoquery1.Parameters[1].Value:=trunc(d2.DateTime)+1;
adoquery1.Parameters[2].Value:=trunc(d1.DateTime);
adoquery1.Parameters[3].Value:=trunc(d2.DateTime)+1;
adoquery1.ExecSQL;