注册 登录
编程论坛 SQL Server论坛

[求助]关于SQLSever数据库,每天查询该天历史表中每一列的最大值,将其存入第二张MAX表,每日增加一条数据

meloop 发布于 2015-02-05 12:39, 2269 次点击
表一为历史数据表yiwuwuhis,表二为最大值统计表yiwuwuMAX。我现在的做法是在代理里面作业步骤里面写语句:insert into yiwuwuMAX(RJ,RK,RZ,DATATIME) SELECT max(RJ),max(RK),max(RZ),CONVERT(varchar(16),DATATIME,120) from yiwuwuhis where convert(char(10),DATATIME,21)=convert(char(10),getdate(),21)group by convert(varchar(16),DATATIME,120)。然后在计划里写明执行时间。
作业执行成功。但在MAX表中会有很多条记录
1    0.087778    0.712778    8    2015-02-05 08:25:00.000
2    0.296667    1.468889    8    2015-02-05 09:10:00.000
3    0.603333    1.847222    8    2015-02-05 09:33:00.000
4    0.848889    2.226111    8    2015-02-05 09:56:00.000
5    0.855556    2.604445    8    2015-02-05 10:18:00.000
6    0.861667    2.982778    8    2015-02-05 10:41:00.000
但我只需要最后一条最大值,并且每天添加一条。我哪里做错了吗?
7 回复
#2
meloop2015-02-05 14:18
回复 楼主 meloop
我发现作业一直执行,将历史表中的数据全部加到了MAX表,跪了,失败。。谁能帮帮我啊
#3
antjl2015-02-06 10:24
Insert Into yiwuwuMAX(RJ,RK,RZ,DATATIME)
Select Max(RJ),Max(RK),Max(RZ),Max(Convert(VarChar(16),DATATIME,120)) From yiwuwuhis
Where Convert(Char(10),DATATIME,21)=Convert(Char(10),Getdate(),21)
Group By Convert(VarChar(10),DATATIME,120)

[ 本帖最后由 antjl 于 2015-2-10 15:25 编辑 ]
#4
firstbobo2015-02-06 20:20
这是sql的问题,还是作业的问题,先要搞清;
#5
firstbobo2015-02-06 22:25
可能是sql的问题,看我操作的结果;
表,select max,select max 加 group,如下图;
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
#6
firstbobo2015-02-06 22:30
看我以上的sql,select max 加 group by,返回了表的全部行;
如果返回带max的单行数据,是一个子查询;
比如我返回person表中等级最高的人的姓名,性别,年龄,等级,如下;
只有本站会员才能查看附件,请 登录
#7
mxbing19842015-02-07 08:33
select convert(varchar(16),getdate(),120) --2015-02-07 08:27
select convert(varchar(10),getdate(),120) --2015-02-07
看看你的Group by 转换的结果到分钟级别了,意思是每分钟一个最大值
你需要的是每天一个最大值,应该转换到天,取varchar(10)就是了
还有你已经是按天查询的,group by 不要都行
insert into yiwuwuMAX(RJ,RK,RZ,DATATIME)
SELECT max(RJ),max(RK),max(RZ),convert(char(10),getdate(),21)
From yiwuwuhis where convert(char(10),DATATIME,21)=convert(char(10),getdate(),21)
#8
volte2015-02-11 10:37
楼上两位回答专业!
1