求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)
------解决方案--------------------你为什么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