日期:2014-05-17  浏览次数:20470 次

求sQL汇总语句 急!!
本帖最后由 LzLlzl001 于 2013-05-20 21:22:29 编辑

     Sql语句(sqlsever2000数据库),索引字段为kmdm(字符型),其余字段je1,je2为数值型

求从b表汇总日期大于2011年2月1日后的数据到A表 
数据量比较大,要求速度快点的方法。

A表字段:(A表记录数据是固定的,不能动态生成)
kmdm ,je1,je2
41         ?   ?   
42         ?   ?  
43         ?   ?  

B表字段:
kmdm,pzh,je1,je2

4114   1  2  5
4115  4   5  7
4211  2   2  1
4212  1   2  4
431    2   1  5
432    6   7  8

C表 cdate 为日期字段,与b表用Pzh字段对应
Pzh,Cdate
1      2011-1-21      
6      2011-2-20
2      2011-3-20



这种方法可以,但是太慢了,求其它好方法,谢谢!!!
  update A set je1=(select sum(je1) from b,a,c where  c.pzh=b.pzh and c.cdate>'2011-2-1' and b.kmdm like A.kmdm +'%' group by a.kmdm)
  update A set je2=(select sum(je2) from b,a ,c where c.pzh=b.pzh and c.cdate>'2011-2-1' and b.kmdm like A.kmdm +'%' group by a.kmdm)
求sQL汇总语句?急!!

------解决方案--------------------
你为什么cdate上没有索引?b、c表中的pzh字段也应该有非聚集索引
------解决方案--------------------
这样测测

  update A
  set je1=d.je1,je2=d.je2
  from A 
  cross apply(select sum(b.je1) as je1,sum(b.je2) as je2 from b inner join c on b.pzh=c.pzh and c.cdate>'2011-2-1' where b.kmdm like A.kmdm +'%') as d