跪求了,解决方法

ai21940125 2010-10-13 06:24:33
高手们,你们好,请帮忙写一个语句,现在有两个表:一个分钟报表(ditme,a.b.c.d) 每1分钟存储一个数据,已经存储一年的数据了,另一个表为小时报表(ditme,a.b.c.d),现在我要把分钟报表里的数据经过计算存入小时报表里去,计算方法如下:分别求每个字段在一个小时内的平均值存入小时报表。且dtime字段需要存入相应的时候,如把分钟报表的2009年10月1日0点到1点的数据经过计算存进小时报表里存储表示为:2009.10.1.1 a.b.c,而且是自动运算。小弟在此感谢了
是sql2003数据库

如下:
大家好,谢谢大家的帮忙,我刚刚试着写了一下,
insert into shinian (dtime,dhour,o2,flago2,nox,znox,flagnox,so2,zso2,flagso2,dust,zdust,flagdust,vq,flagvq,t,flagt,p,flagp,vd,flagvd,
pnox,pdust,pso2,h)
select dtime, datepart(hour,dtime),avg(o2),flago2,avg(nox),avg(znox),flagnox,avg(so2),avg(zso2),flagso2,avg(dust),avg(zdust),flagdust,
avg(vq),flagvq,avg(t),flagt,avg(p),flagp,avg(vd),flagvd,avg(pnox),avg(pdust),avg(pso2),avg(h) from 五分钟报表 where dateadd(hour,-1,dtime)<11 and (datepart(month,dtime))=10 and (datepart(day,dtime))=1 and datepart(year,dtime)=2009
group by dtime,o2,flago2,nox,znox,flagnox,so2,zso2,flagso2,dust,zdust,flagdust,vq,flagvq,t,flagt,flagp,vd,flagvd,
pnox,pdust,pso2,h
语法是通过了,就是不产生数据
请问错在哪?还有,我想实现小时,日期、月份、年份的值自动累加,应该怎么实现

表结构如下:
五分钟报表

dtime o2 nox so2 flagso2
2010-6-1 0:00 15.7485733 2732.999774 5212.708246 12
2010-6-1 0:05 15.74220085 2792.895533 5449.833375 12
2010-6-1 0:10 15.75003242 2843.881992 5638.633359 12
2010-6-1 0:15 15.75477791 2758.487783 5629.257168 12
2010-6-1 0:20 15.75609016 2648.922284 5506.954437 12
2010-6-1 0:25 15.75480461 2581.739542 5379.389005 12
2010-6-1 0:30 15.75123787 2485.233948 5242.038514 12
2010-6-1 0:35 15.74884033 2146.705779 4675.418694 12
2010-6-1 0:40 15.75102234 1950.664829 4313.927207 12
2010-6-1 0:45 15.75589752 1985.773374 4322.022007 12
2010-6-1 0:50 15.75708961 2128.957035 4442.065678 12
2010-6-1 0:55 15.758955 2048.108325 4457.949072 12
2010-6-1 1:00 15.7585907 2062.866351 4421.945135 12
2010-6-1 1:05 15.75663376 2175.22369 4557.069564 12
2010-6-1 1:10 15.75714111 2395.008946 4668.886144 12
2010-6-1 1:15 15.75499725 2494.439916 4615.265086 12
2010-6-1 1:20 15.75378609 2623.845259 4814.829707 12
2010-6-1 1:25 15.7511425 2826.638688 5232.841349 12
2010-6-1 1:30 15.74621773 2975.147571 5442.403869 12
2010-6-1 1:35 15.74801826 2751.256528 5188.933726 12
2010-6-1 1:40 15.7506485 2408.471639 4754.324593 12
2010-6-1 1:45 15.75352859 2475.521406 4886.747285 12
2010-6-1 1:50 15.75772667 2649.556054 5121.278271 12
2010-6-1 1:55 15.75942802 2668.882924 5054.419008 12

小时报表

dtime o2 nox so2 flagso2
2010-6-1 1.00 15.7485733 2732.999774 5212.708246 12
2010-6-1 2.00 15.74220085 2792.895533 5449.833375 12
...全文
127 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
abuying 2010-10-18
  • 打赏
  • 举报
回复
2009年10月1日0点到1点的数据,应该第二天的1
dateadd(hour,-1,dtime)<11 and (datepart(month,dtime))=10 and (datepart(day,dtime))=1 and datepart(year,dtime)=2009
--那分钟呢!
datepart(hour,dtime)>=0 and datepart(hour,dtime)<=1 and (datepart(month,dtime))=10 and (datepart(day,dtime))=1 and datepart(year,dtime)=2009

这样的话 范围是00:59:59--01:59:59,所以你还判断分钟,秒啊
这样写不好!应该精确到秒!其它可以不要了
datediff(second,'2009-10-1 00:00:00',time)>=0 and datediff(second,'2009-10-1 00:00:00',time)<=3600
gdk123 2010-10-14
  • 打赏
  • 举报
回复
没看懂,高手在哪里?
yuhuiwqvb 2010-10-13
  • 打赏
  • 举报
回复
不懂。。。。持续关注!!!
SQLCenter 2010-10-13
  • 打赏
  • 举报
回复
where dateadd(hour,-1,dtime)<11

这个意思是减一个小时小于1900-01-12
SQLCenter 2010-10-13
  • 打赏
  • 举报
回复
where dateadd(hour,-1,dtime)<11
是这个意思吧:
where datepart(hour,dtime)<12
闹铃 2010-10-13
  • 打赏
  • 举报
回复
不明白 帮顶 等高人
smitxx 2010-10-13
  • 打赏
  • 举报
回复
insert into shinian (dtime,dhour,o2,flago2,nox,znox,flagnox,so2,zso2,flagso2,dust,zdust,flagdust,vq,flagvq,t,flagt,p,flagp,vd,flagvd,
pnox,pdust,pso2,h)

是不是少了一个values

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧