0
私のテーブルにはクロックアウト時間が保存されていますが、そのうちのいくつかは1回以上パンチします。どのように最新結果を得るには?結果が複数ある場合はどこかで
SELECT
ROW_NUMBER() OVER (PARTITION BY l.USERID, day(l.CHECKTIME), DATEPART(hh, l.CHECKTIME) ORDER BY (select 0)) RN,
l.USERID,
CASE
WHEN CAST(l.CHECKTIME AS TIME) > = CAST(SC.EndTime AS TIME)
THEN CONVERT(VARCHAR(10), CAST(l.CHECKTIME AS TIME), 100)
ELSE 'Early ClockOut ' + CONVERT(VARCHAR(100), CAST(l.CHECKTIME AS TIME), 100)
END as ClockOut,l.CHECKTIME
FROM
CHECKINOUT l
INNER JOIN
USERINFO u ON l.USERID = u.USERID
INNER JOIN
UserUsedSClasses uuc ON uuc.USERID = u.USERID
INNER JOIN
SchClass SC ON uuc.SchId = SC.schClassid
WHERE
u.BADGENUMBER not in (79,103,78)
AND MONTH(CHECKTIME) = MONTH(getdate()) AND YEAR(CHECKTIME) = YEAR(getdate())
AND uuc.SchId = 1
AND DATEPART (hh, l.CHECKTIME) >= DATEPART(hh, SC.EndTime)
AND DATEPART(hh, l.CHECKTIME) >= DATEPART (hh, SC.StartTime)
ORDER BY
u.BADGENUMBER
出力:
RN USERID ClockOut CHECKTIME
1 6 7:04PM 2017-03-09 19:04:12.000
2 6 7:55PM 2017-03-09 19:55:59.000
1 6 11:31PM 2017-03-09 23:31:27.000
にのみ、この結果を表示する必要があります:あなたのrow_number()
で
RN USERID ClockOut CHECKTIME
-----------------------------------------------
1 6 11:31PM 2017-03-09 23:31:27.000