一段SQL在数据库独自执行跟DELPHI里执行结果为何不同

一段SQL在数据库单独执行跟DELPHI里执行结果为何不同
我在DELPHI里有两个DateTimePicker控件,名字是dtp1和dtp2,dtp1的日期为'2009-1-1',dtp2的日期为'2009-3-31',有一个Button事件如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
  adoquery1.Close ;
  adoquery1.SQL.Clear ;
  adoquery1.SQL.Add('delete from tb');
  adoquery1.ExecSQL ;
  adoquery1.Close ;
  adoquery1.SQL.Clear ;
  adoquery1.SQL.Add(adoquery3.SQL.Text);
  adoquery1.Parameters.parambyname('bd1').Value:=dtp1.date;
  adoquery1.Parameters.parambyname('ed1').Value:=dtp2.date;
  adoquery1.Parameters.parambyname('bd2').Value:=dtp1.date;
  adoquery1.Parameters.parambyname('ed2').Value:=dtp2.date;
  adoquery1.ExecSQL ;
  adoquery1.Close ;
  adoquery1.SQL.Clear ;
  adoquery1.SQL.Add('select tb.TrnspName as 区域,tb.U_bumen as 部门,tb.LineTotal as 合计 from tb') ;
  adoquery1.Open ;
end;

其中c的语句如下:
Insert tb(TrnspName,U_bumen,LineTotal)
select #a.TrnspName,#a.U_bumen,sum(#a.LineTotal) from (
select a.TrnspName ,d.U_bumen,sum(b.LineTotal) as LineTotal from OSHP a join OITM c on a.TrnspCode=c.ShipType
join INV1 b on b.ItemCode=c.ItemCode join OINV d on b.DocEntry=d.DocEntry
where d.DocDate between :bd1 and :ed1 group by a.TrnspName,d.U_bumen
union all
select a1.TrnspName,d1.U_bumen,sum(-b1.LineTotal) as LineTotal from OSHP a1 join OITM c1 on a1.TrnspCode=c1.ShipType
join RIN1 b1 on b1.ItemCode=c1.ItemCode join ORIN d1 on b1.DocEntry=d1.DocEntry
where d1.DocDate between :bd2 and :ed2 group by a1.TrnspName,d1.U_bumen ) #a
group by #a.TrnspName,#a.U_bumen
having #a.TrnspName<>'赠品材料' and #a.U_bumen='商场部'

我去掉adoquery3.SQL.Text中Insert tb(TrnspName,U_bumen,LineTotal)这句话,把余下的SQL语句放到SQL2000查询分析器里,把时间改为between '2009-1-1' and '2009-3-31'结果如下:
TrnspName U_bumen LineTotal 
---------------------------
冰洗区 商场部 657645
家电区 商场部 674488

但是我执行Button事件后结果如下:
TrnspName U_bumen LineTotal 
---------------------------
冰洗区 商场部 598738
家电区 商场部 599154

同样的SQL语句,同样的日期,在Delphi里我只是把数据先提交到临时表,再从临时表查询数据,为什么查出来的数据有差异?临时表的结构是tb(TrnspName nvarchar(3),U_bumen nvarchar(3),LineTotal int)



------解决方案--------------------
Delphi(Pascal) code



Insert tb(TrnspName,U_bumen,LineTotal) 
select #a.TrnspName,#a.U_bumen,sum(#a.LineTotal) from ( 
select a.TrnspName ,d.U_bumen,sum(b.LineTotal) as LineTotal from OSHP a join OITM c on a.TrnspCode=c.ShipType 
join INV1 b on b.ItemCode=c.ItemCode join OINV d on b.DocEntry=d.DocEntry 
where convert(char(10),d.DocDate,112) between :bd1 and :ed1 group by a.TrnspName,d.U_bumen 
union all 
select a1.TrnspName,d1.U_bumen,sum(-b1.LineTotal) as LineTotal from OSHP a1 join OITM c1 on a1.TrnspCode=c1.ShipType 
join RIN1 b1 on b1.ItemCode=c1.ItemCode join ORIN d1 on b1.DocEntry=d1.DocEntry 
where convert(char(10),d1.DocDate,112) between :bd2 and :ed2 group by a1.TrnspName,d1.U_bumen ) #a 
group by #a.TrnspName,#a.U_bumen 
having #a.TrnspName <>'赠品材料' and  #a.U_bumen='商场