微
微湖水生
Unregistered / Unconfirmed
GUEST, unregistred user!
问题是这样的:我那有两个表,一个是灌溉站表T1(F_StaCode(站编号),
F_PreWeirCode(前一测量站编号),F_NextWeirCode(前一测量站编号)),一个是
测量站测量值表T2(F_WeirCode(测量站编号),F_Time(测量时间),F_Value(测量值));
现在要求出某年个灌溉站的总耗用值(即上下两测量站值之差)。
另注:测量站每5分钟一次数据;如果灌溉站位于水渠最后则没有下一个测量。
我是这样写的:
select T1.F_StaCode,
case
when F_NextWeirCode='' then (Sum(L1.F_Value)-Sum(L2.F_Value))
else Sum(L1.F_Value)
end as ValueUse
from T1 join T2 as L1 on T1.F_PreWeirCode=L1.F_WeirCode
and DATEPART(yy,L1.F_Time)='2002'
left join T2 as L2 on T_1.F_NextWeirCode=L2.F_WeirCode
and DATEPART(yy,L2.F_Time)='2002'
Group By T1.F_StaCode,F_NextWeirCode
库中有11个灌溉站,只有各测试站一天的数据,而该查询语句用时30S;请各位
富翁看看,有何高招??
F_PreWeirCode(前一测量站编号),F_NextWeirCode(前一测量站编号)),一个是
测量站测量值表T2(F_WeirCode(测量站编号),F_Time(测量时间),F_Value(测量值));
现在要求出某年个灌溉站的总耗用值(即上下两测量站值之差)。
另注:测量站每5分钟一次数据;如果灌溉站位于水渠最后则没有下一个测量。
我是这样写的:
select T1.F_StaCode,
case
when F_NextWeirCode='' then (Sum(L1.F_Value)-Sum(L2.F_Value))
else Sum(L1.F_Value)
end as ValueUse
from T1 join T2 as L1 on T1.F_PreWeirCode=L1.F_WeirCode
and DATEPART(yy,L1.F_Time)='2002'
left join T2 as L2 on T_1.F_NextWeirCode=L2.F_WeirCode
and DATEPART(yy,L2.F_Time)='2002'
Group By T1.F_StaCode,F_NextWeirCode
库中有11个灌溉站,只有各测试站一天的数据,而该查询语句用时30S;请各位
富翁看看,有何高招??