1

SQL エージェントを使用するのは初めてで、あまり経験がありません!
テーブルのいくつかの列を毎日チェックし、今日の日付に基づいてそのうちの 1 つを更新するスケジュールされたジョブを作成する必要があります。

プロジェクト テーブルの列:

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 =列とi を(todayDate-startDate)*(100/(dueDate-StartDate)) 比較することで、列の値をtrue (時間どおり) または false (遅れた) に設定できます。progressExpectedProgressstatus

前もって感謝します!

4

2 に答える 2

0

クエリを実行するたびに予想される進行状況を示す計算列を使用できます。読み取るたびに再計算されるほどパフォーマンスが良くないかもしれませんが、妥当な数の行と、質問のように単純な関数の場合、うまく機能するはずです。

于 2013-09-14T14:51:59.190 に答える
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 に答える