1

这是我第一次使用 SQL 代理,我没有太多经验!
我需要创建一个计划的作业,每天检查表格的几列,并根据今天的日期更新其中的一个!

项目表的列:

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列和ExpectedProgressi 可以设置status列的值 true(准时)或 false(迟到)

提前致谢!

4

2 回答 2

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

于 2013-09-14T14:39:59.623 回答
0

您可以使用计算列,每次查询时都会为您提供预期的进度。性能可能不如每次读取时重新计算的性能好,但对于合理数量的行和一个简单的功能,就像您在问题中所遇到的那样,它应该表现良好。

于 2013-09-14T14:51:59.190 回答