这是我第一次使用SQL Agent而且我没有多少经验! 我需要创建一个预定的作业,每天检查一个表的几列,并根据今天的日期更新其中一列!
项目表的列:
CREATE TABLE [dbo].[Project](
[projectID] [int] IDENTITY(1,1) NOT NULL,
[prID] [nvarchar](50) NULL,
[projectName] [nvarchar](20) NOT NULL,
[startDate] [datetime] NOT NULL,
[dueDate] [datetime] NOT NULL,
[progress] [int] NULL,
[status] [bit] NULL,
我需要每天使用status
列和startDate
根据项目的进度每天更新today's date
列。基本上是这样的:
ExpectedProgress = (todayDate-startDate)*(100/(dueDate-StartDate))
现在通过比较progress
列和ExpectedProgress
我可以将status
列的值设置为true(准时)或false(延迟)
提前致谢!
答案 0 :(得分:0)
您需要创建具有上述查询的存储过程,然后将该存储过程添加为作业的步骤并对其进行计划。您所需的查询应该是:
Update TableName Set ExpectedProgress = datediff(dd,startDate,todaydate)*(100/daediff(dd,StartDate,duedate))
Update TableName set status=(case when progress>= ExpectedProgress then 'true' else 'false' end.
在这里创建工作的步骤如下: http://technet.microsoft.com/en-us/library/ms190268.aspx
答案 1 :(得分:0)
您可以使用计算列,每次查询时都会为您提供预期的进度。可能不如每次读取时重新计算的性能好,但是对于合理的行数和简单的函数,就像你在问题中一样,它应该表现良好。