22,209
社区成员
发帖
与我相关
我的任务
分享
--假定你传入的参数为
declare @sdate datetime, @edate datetime
set @sdate = '2011-04-06 8:00:00'
set @edate = '2011-04-08 8:00:00'
select 雨量站,常年=sum(雨量)/count(distinct year(时间))
from (
select * from #t where dateadd(yy,datediff(yy,时间,@sdate),时间) between @sdate and @edate
) a
group by 雨量站
( isnull(az雨量,0) + isnull(bz雨量,0) + isnull(cz雨量,0) ) / 3
SELECT aa.雨量站 ,
( az雨量 + bz雨量 + cz雨量 ) / 3 ,
( ap雨量 + bp雨量 + cp雨量 ) / 3
FROM ( SELECT 雨量站 ,
SUM(雨量) AS az雨量 ,
AVG(雨量) AS ap雨量
FROM 实测雨情表
WHERE 时间 BETWEEN '2011-03-06 8:00:00' AND '2011-03-16 8:00:00'
GROUP BY 雨量站
) aa
LEFT JOIN ( SELECT 雨量站 ,
SUM(雨量) AS bz雨量 ,
AVG(雨量) AS bp雨量
FROM 实测雨情表
WHERE 时间 BETWEEN DATEADD(yy, 1, '2011-03-06 8:00:00') AND DATEADD(yy, 1,
'2011-03-16 8:00:00')
GROUP BY 雨量站
) bb ON aa.雨量站 = bb.雨量站
LEFT JOIN ( SELECT 雨量站 ,
SUM(雨量) AS cz雨量 ,
AVG(雨量) AS cp雨量
FROM 实测雨情表
WHERE 时间 BETWEEN DATEADD(yy, -1, '2011-03-06 8:00:00') AND DATEADD(yy,
-1, '2011-03-16 8:00:00')
GROUP BY 雨量站
) cc ON aa.雨量站 = cc.雨量站
SELECT aa.雨站 ,
( az雨量 + bz雨量 + cz雨量 ) / 3 ,
( ap雨量 + bp雨量 + cp雨量 ) / 3
FROM ( SELECT 雨站 ,
SUM(雨量) AS az雨量 ,
AVG(雨量) AS ap雨量
FROM tb
WHERE 时间 BETWEEN 开始时间 AND 结束时间
GROUP BY 雨站
) aa
LEFT JOIN ( SELECT 雨站 ,
SUM(雨量) AS bz雨量 ,
AVG(雨量) AS bp雨量
FROM tb
WHERE 时间 BETWEEN DATEADD(yy, 1, 开始时间) AND DATEADD(yy, 1,
结束时间)
GROUP BY 雨站
) bb ON aa.雨站 = bb.雨站
LEFT JOIN ( SELECT 雨站 ,
SUM(雨量) AS cz雨量 ,
AVG(雨量) AS cp雨量
FROM tb
WHERE 时间 BETWEEN DATEADD(yy, -1, 开始时间) AND DATEADD(yy,
-1, 结束时间)
GROUP BY 雨站
) cc ON aa.雨站 = cc.雨站
create view Rain_V1
(
雨量站,雨量,年份,时段
)
as
select [雨量站], [雨量], CONVERT(varchar(4),year([时间])),right(CONVERT(varchar(20),[时间],20),14)
FROM [实测雨情表];
CREATE FUNCTION Rain_F1
(@bdt varchar(20),
@edt varchar(20))
RETURNS TABLE
AS
BEGIN
RETURN
(
select [雨量站],[年份],sum([雨量]) [雨量] from Rain_V1
where 时段 between @bdt and @edt
group by [雨量站],[年份]
);
END
GO
CREATE FUNCTION Rain_F2 (@bdt varchar(20),
@edt varchar(20))
RETURNS TABLE
AS
RETURN
(
select [雨量站],[年份],sum([雨量]) [雨量] from Rain_V1
where 时段 between @bdt and @edt
group by [雨量站],[年份]
);
GO
select 雨量站,avg(雨量) from RainSite,Rain where RainSite.col=Rain.col and date>='' and date<'' group by 雨量站
SELECT 雨站 ,
SUM(雨量) ,
AVG(雨量)
FROM tb
WHERE 时间 BETWEEN 开始时间 AND 结束时间
GROUP BY 雨站