sql定时执行查询更新表

xttxqjfg 2015-08-27 03:56:05
对sql这块不是很熟,希望大神能指点一二。具体问题如下:
1、定时任务,在特定的时间执行指定的sql语句,这个目前已经知道是用代理的作业来实现。
2、查询并更新表。这个意思就是在数据库里面有一个生产任务表,每天会有几百甚至上千条数据,每条数据中有个单次任务量。那么现在要做一个报表,中间会有要求去查询每月的累计任务量和每年的累计任务量。但是每次查的话数据量很大,时间很长。现在就想通过一张中间表来存储每月的任务量。每天的某个时候查询一次每月的累计任务量,然后在中间表中检查是不是有这个月的信息,有则更新,没有则插入。年累计任务量则直接查询中间表每年12个月的数据就可以了。
重点是请教这个第二步的语句怎么写?
...全文
694 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
江南雪_158 2015-09-01
  • 打赏
  • 举报
回复
你可以先将视图中数据查询出来之后插入一个临时表中然后使用merge子句,这个子句就是解决这个问题的
xttxqjfg 2015-08-28
  • 打赏
  • 举报
回复
引用 1 楼 frankl123 的回复:
if not exists(select * from 中间表 where 年 = YYYY and 月=mm)
begin
	insert into 
	select SUM() from 生产任务表 where 日期= dateadd(DAY,-1,getdate())--第二天统计前一天的
end
else
begin
	update 
end
我有一张视图,是从好几个明细表中抓取的数据,这样查询视图的时候就会很慢,我现在想做一个定时任务,将试图的数据copy到一个表中,表的字段跟视图的字段是一样的,这样有没有增量的方式去做这个操作,也就是不要每次都去清空表之后将视图的数据copy进去,而是将视图表中新增的记录追加到表中?
frankl123 2015-08-27
  • 打赏
  • 举报
回复
if not exists(select * from 中间表 where 年 = YYYY and 月=mm)
begin
	insert into 
	select SUM() from 生产任务表 where 日期= dateadd(DAY,-1,getdate())--第二天统计前一天的
end
else
begin
	update 
end

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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