私は以下のクエリを表示しています。時間間隔の計算中は、チェックアウトが同じ日付の場合にのみ時間間隔を表示します。例えば、私が11/12/2017にチェックインした場合、同じ日付でチェックアウトする必要があります。11/12/201 n時間間隔を計算します。SQLビュークエリで2つの日付間の時間間隔の計算が必要
しかし、私は翌日(12:00深夜以降)チェックアウトしても時間間隔を計算する必要があります。希望の結果を得るためにクエリを変更する手助けをしますか?
問合せ:
ALTER VIEW [dbo].[TimeAttendanceQuery]
AS
SELECT TOP (100) PERCENT
dbo.AxPerson.Name,
dbo.AxPerson.IdNumber AS EmployeeID,
dbo.TimeAttendance.Badge,
dbo.AxPerson.Id,
MIN(dbo.TimeAttendance.EventTime) AS EntryTime,
MAX(dbo.TimeAttendance.EventTime) AS ExitTime,
CAST(DATEDIFF(second, MIN(dbo.TimeAttendance.EventTime), MAX(dbo.TimeAttendance.EventTime))/60/60/24 AS NVARCHAR(50)) +
':' + CAST(DATEDIFF(second, MIN(dbo.TimeAttendance.EventTime), MAX(dbo.TimeAttendance.EventTime))/60/60 % 24 AS NVARCHAR(50)) + ':' + CAST(DATEDIFF(second, MIN(dbo.TimeAttendance.EventTime), MAX(dbo.TimeAttendance.EventTime))/60 % 60 AS NVARCHAR(50))
AS TimeInterval,
dbo.TimeAttendance.Event,
dbo.AxPerson.Type AS ShitType,
dbo.AxPerson.ShiftDesc,
CONVERT(Varchar,dbo.TimeAttendance.EventTime, 101) AS EventTIME
FROM
dbo.AxPerson
INNER JOIN dbo.TimeAttendance ON dbo.AxPerson.Name = dbo.TimeAttendance.Name
GROUP BY dbo.AxPerson.Name, dbo.AxPerson.IdNumber, dbo.TimeAttendance.Badge, CONVERT(Varchar, dbo.TimeAttendance.EventTime, 101), dbo. AxPerson.ShiftDesc, dbo.AxPerson.Id, dbo.TimeAttendance.Event,dbo.AxPerson.Type
ORDER BY dbo.AxPerson.Name, EventTime DESC
GO
イベントタイプを決定する列がありますか?はい、チェックインイベントの価値は何ですか?チェックアウトイベントの価値は何ですか? –
'TOP(100)PERCENT'と' ORDER BY'は、ビュー定義で余分なものを削除してください。結果セットの順序を保証するために、ビューを使用する 'SELECT'ステートメントで' ORDER BY'を指定する必要があります。 –
サンプルデータと望ましい結果が役立ちます。 –