日期:2014-05-18 浏览次数:20669 次
--试下这个速度是多少
alter proc [dbo].[SelectLastData]
as
declare
@Month varchar(50),
@Year varchar(50)
Select @Month=MAX(CONVERT(varchar(7),date_time,120)),@Year=MAX(CONVERT(varchar(4),date_time,120)) from HistoryData;
if object_id('tempdb..#tempLastdata') is not null drop table #tempLastdata;
select SiteID,SiteName=convert(varchar(50),''),
ShuiWei,LiuLiang,LiuLiang_Total,YuLiang,
MYL=convert(varchar(50),''),
YYL=convert(varchar(50),''),
Date_Time
into #tempLastdata
from LastData where 1=2;
insert into #tempLastdata
select SiteID,ShuiWei,LiuLiang,LiuLiang_Total,YuLiang,Date_Time
from LastData;
if object_id('tempdb..#t1') is not null drop table #t1;
select SiteID,sum(case when convert(varchar(7),date_time,120)>@Month then Yuliang
else 0 end) myl,
sum(Yuliang) yyl
into #t1
from HistoryData
where convert(varchar(4),date_time,120) >= @Year
group by SiteID;
update #tempLastdata
set MYL=#t1.myl,
YYL=#t1.yyl
from #t1
where #t1.SiteID=#tempLastdata.SiteID;
update #tempLastdata
set SiteName=SiteInfo.SiteName
from SiteInfo
where #tempLastdata.SiteID=SiteInfo.SiteID;
select * from #tempLastdata order by SiteID;
drop table #tempLastdata,#t1;
go
------解决方案--------------------
ALTER proc [dbo].[SelectLastData]
as
create table #tempLastdata
(
SiteID int,
SiteName varchar(50),
ShuiWei varchar(50),
LiuLiang varchar(50),
LiuLiang_Total varchar(50),
YuLiang varchar(50),
MYL varchar(50),
YYL varchar(50),
date_time datetime
)
declare @SiteID varchar(50),
@SiteName varchar(50),
@ShuiWei varchar(50),
@LiuLiang varchar(50),