日期:2014-05-18  浏览次数:20608 次

急!!!奇怪的数据检索问题,请各位大侠帮忙看看……
很奇怪的问题,麻烦仔细看看小弟遇到的现象:

Sql   Server2000   中有两中表,结构如下:
表A:(40个字段,类型均为varchar,当前数据1万条左右)

TheID           Company           TheDate             Ship     ……
HH00001         XXXX               2003-01-01       YYYYY   ……
……
HH09901         DDDD               2006-12-30       UUUUU   ……
HH09902         TTTT               2007-01-02       RRRRR   ……
……

表B:(15个字段,TheFeeW类型为float,其他类型均为varchar,当前数据5万条左右)

TheID           TheFee           Currency         FeeIO       ……
HH00001       1000               RMB                   收             ……
HH00001       500                 RMB                   收             ……
HH00001       800                 USD                   收             ……
HH00001       700                 RMB                   付             ……
HH00001       600                 USD                   付             ……
HH00001       100                 USD                   付             ……
……

现在需要得到如下的统计数据:
TheID         Company     InRMB     OutRMB     InUSD     OutUSD   ……
HH00001     XXXX           1500       700           800         700    
……
小弟的SQL语句是这样写的:
select   *,  
(select   Sum(AllFee)   from   B   where   TheID   =   A.TheID   and   FeeIO   =   '收 '   and   Currency   =   'RMB ')   AS   InRMB,
(select   Sum(AllFee)   from   B   where   TheID   =   A.TheID   and   FeeIO   =   '付 '   and   Currency   =   'RMB ')   AS   OutRMB,
(select   Sum(AllFee)   from   B   where   TheID   =   A.TheID   and   FeeIO   =   '收 '   and   Currency   =   'USD ')   AS   InUSD,
(select   Sum(AllFee)   from   B   where   TheID   =   A.TheID   and   FeeIO   =   '付 '   and   Currency   =   'USD ')   AS   OutUSD,
From   A

执行该语句的时候,大约5秒的时间就可以完成。但如果要对2007年的数据进行统计(A中100多条记录),即加一个条件where   A.TheDate   &