这个问题可能比较简单,各位大虾别笑话啊>_<
现有一个流量表FTReal,字段是时间(datetime)和各个流量计的流量。(顺便问下,这个表设计的合理不合理啊,要不要加个KEY ID?)数据是每过30分钟左右增加一条,可能为空。
我现在想算的是日累积流量FTDay,也就是计算第二天早上8点和第一天早上8点后的第一条非空记录的差,请问应该如何来实现呢?
我想问下,能建立一个表来实现这功能么?如果不能的话那我应该怎么做呢?
先谢过各位了。
现有一个流量表FTReal,字段是时间(datetime)和各个流量计的流量。(顺便问下,这个表设计的合理不合理啊,要不要加个KEY ID?)数据是每过30分钟左右增加一条,可能为空。
我现在想算的是日累积流量FTDay,也就是计算第二天早上8点和第一天早上8点后的第一条非空记录的差,请问应该如何来实现呢?
我想问下,能建立一个表来实现这功能么?如果不能的话那我应该怎么做呢?
先谢过各位了。
select a.流量-
(select top 1 流量 from FTReal
where datediff(day,时间,a.时间)<=1
and 流量 is not null
order by 时间)
from FTReal a
2、用一个sql语句就可以解决:
select max(流量)-min(流量) from 流量表 group by KEYID where 时间范围
我的也是为了实现它的需求嘛 需要是8点以后非空流量,这两点你都没有实现...
不过我的是要改改.
declare @b varchar(100)set @a=convert(varchar(11),getdate(),120) +'08:00:00'
set @b=convert(varchar(11),getdate()-1,120) +'08:00:00'
select top 1 FTreal from 表 where convert(varchar,datetime,120)>@a and ftreal is not null order by datetime
-
select top 1 FTreal from 表 where convert(varchar,datetime,120)>@b and ftreal is not null order by datetime
您最后两句好像有点错误啊,运行不了。TO LJS1519:
流量表是根据数据采集到的时间来生成的,一个流量计的流量就是一个列。
然后还有个问题,就是如果按照上面各位说的建立了这个FTDAY表,那是不是得设置为每天运行一次?
union all select '2006-09-05 08:00:12',23.23948
union all select '2006-09-06 08:00:18',523.342declare @a varchar(100)
declare @b varchar(100)set @a=convert(varchar(11),getdate(),120) +'08:00:00'
set @b=convert(varchar(11),getdate()-1,120) +'08:00:00'
select
(select top 1 FTreal from @c where convert(varchar,[datetimef],120)>@a and ftreal is not null order by [datetimef])
-
(select top 1 FTreal from @c where convert(varchar,[datetimef],120)>@b and ftreal is not null order by [datetimef])