次のようなデータがテーブルにあります。
TimeIn TimeOut
-------------------------------------
6/1/2010 09:00:00 Null
6/2/2010 09:00:00 6/2/2010 16:45:00
6/3/2010 10:05:00 Null
6/4/2010 07:30:00 6/4/2010 15:45:00
「サインアウトされていない」列の最後のアクティビティを検索するためのストアドプロシージャがあります
セルを他のセルにコピーするためのストアドプロシージャもあります...
次に、必要なのは[TimeOut]を更新することです(タイムアウトがない場合)
よりエレガントな方法で
UPDATE TimeOut SET DATEPART(HOUR, TimeOut) = DATEPART(HOUR, TimeIN) + 8
したがって、全体的なアイデアは、最初に最後のアクティビティかどうかを確認することでした-タイムアウト列がnull
そうである場合は、最大労働時間を許可してTimeOutに署名します(8)。
それを行う簡単な方法はありますか?
アップデート
マークアンサーに関しては、これはユーザーがサインアウトしなかったかどうかを調べるための選択です
SELECT CASE WHEN [TimeOut] IS NULL THEN '' ELSE CONVERT(NVARCHAR,[TimeOut]) END FROM tblTime WHERE tId = ( SELECT MAX(tId) FROM tblTime WHERE UserId = 123
だから私は最後の活動でサインアウトしなかった人を見つけるクエリを持っています
次に、その特定の行フィールドを更新するだけで済みますTimeOut
+8の時間でそれが私の質問でした