私は勤怠管理のアプリケーションで作業していて、いくつかの啓蒙が必要です。人は残業時間を作った -
1:これは、行を返す
このSELECTに基づくUPDATE - How to?
SELECT M.IdMarcacao, M.IdFuncionario, M.Data, M.Hora, Extra,
(M.Hora-(convert(varchar(11),dateadd(ms,cast(Extra*3600000 as bigint),'12/30/1899'),108))) as teste
FROM TimeReport.dbo.Marcacoes M
INNER JOIN TimeReport.dbo.Resultados R ON M.IdFuncionario = R.IdFuncionario
AND M.Data = R.Data
WHERE (R.Extra <> 0 AND M.[Tipo Marcacao] = 'SAI')
AND M.Hora=(SELECT max(hora)
FROM timereport.dbo.marcacoes
WHERE data = M.Data)
:
これが私の現在のSQLクエリです。
2 - 最後のログアウト時刻
3 - 超過時間の合計。
4 - ログアウト時間と残業=予定時刻の差
5 - 私は本当に必要なものを、アプリケーション自体、についてはあまり詳細に入ることなく、それはログアウト時間(ティポ= SAI)
だことを確認してくださいすることにこれを有効にすることですUPDATE
ステートメント。
は、私がこれを行うために使用:0pmまで一つ一つの時間
UPDATE [TimeReport].[dbo].[Marcacoes]
SET [Hora] = [Hora] - convert(datetime,'01:00:00',108)
WHERE [Hora] > '1899-12-30 19:00:00.000'
を:(それは私が知っている良い解決策ではありません
このアップデートは、マイナス1時間、作業者がいる場合に、元のログアウト時間を変更します。
私がやろうとしているのは、プロセスを単純化し、自動化することです。
これは私の以前の質問です...その選択文に基づいてどのように更新できますか?
...つまり、何かのように:
UPDATE TimeReport.dbo.Marcacoes
SET Hora = (The value from the statement above, field "teste")
WHERE IdMarcacao = IdMarcacao(from the statement above)
注:この「IdMarcacao」は、行の一意の識別子です。
ありがとうございます!私は、これはここで扱われたと信じて
は:http://stackoverflow.com/q/2334712/535275 –
は、単純なことをすることはできません。|これは私の日、笑を作る。私は試してみましょう。 –
Nop。うまくいきませんでした。 –