DECLARE @UTCUNIT INT;
DECLARE @YEAR INT;
DECLARE @DATE NVARCHAR(10);
SET @UTCUNIT = 9; --KOREA STANDARD TIME
SET @YEAR = 2018;
SET @DATE = '2018-10-01';
SELECT
USERTIMESHEETLIST.COMPANY,
USERTIMESHEETLIST.USERID,
USERTIMESHEETLIST.TYPE,
USERTIMESHEETLIST.LOGIN_DATE,
DATEPART(HOUR,USERTIMESHEETLIST.LOGIN_TIME) AS LOGIN_TIMEUNIT,
USERTIMESHEETLIST.LOGIN_TIME,
USERTIMESHEETLIST.LOGOUT_DATE,
DATEPART(HOUR,USERTIMESHEETLIST.LOGOUT_TIME) AS LOGOUT_TIMEUNIT,
USERTIMESHEETLIST.LOGOUT_TIME
FROM (SELECT
USERCOMPANY.COMPANY,
USERTIMESHEET.USERID,
USERTIMESHEET.TYPE,
MIN(USERTIMESHEET.LOGIN_DATE) AS LOGIN_DATE,
MIN(DATEPART(HOUR,USERTIMESHEET.LOGIN_TIME)) AS LOGIN_TIMEUNIT,
MIN(USERTIMESHEET.LOGIN_TIME) AS LOGIN_TIME,
MAX(USERTIMESHEET.LOGOUT_DATE) AS LOGOUT_DATE,
MAX(DATEPART(HOUR,USERTIMESHEET.LOGOUT_TIME)) AS LOGOUT_TIMEUNIT,
MAX(USERTIMESHEET.LOGOUT_TIME) AS LOGOUT_TIME
FROM (SELECT
USERID,
CASE
WHEN TYPE = 0 THEN 'LOGIN'
WHEN TYPE = 1 THEN 'CHANGE PASSWORD'
END AS TYPE,
CAST(DATEADD(HH, 9, CREATEDDATETIME) AS DATE) AS LOGIN_DATE,
CAST(DATEADD(HH, 9, CREATEDDATETIME) AS TIME) AS LOGIN_TIME,
CASE
WHEN LOGOUTDATETIME = '1900-01-01 00:00:00.000' THEN CAST(DATEADD(HH, 9, CREATEDDATETIME) AS DATE) -- 비정상 LOGOUT으로 인해 타임이 없는 경우 로그인 일자로 처리
WHEN LOGOUTDATETIME != '1900-01-01 00:00:00.000' THEN CAST(DATEADD(HH, 9, LOGOUTDATETIME) AS DATE)
END AS LOGOUT_DATE,
CASE
WHEN LOGOUTDATETIME = '1900-01-01 00:00:00.000' THEN '23:59:59.000' -- 비정상 LOGOUT으로 인해 타임이 없는 경우 그날 마지막 시간으로 처리
WHEN LOGOUTDATETIME != '1900-01-01 00:00:00.000' THEN CAST(DATEADD(HH, 9, LOGOUTDATETIME) AS TIME)
END AS LOGOUT_TIME
FROM SYSUSERLOG
WHERE TYPE = 0
AND CREATEDDATETIME != '1900-01-01 00:00:00.000') AS USERTIMESHEET
INNER JOIN USERINFO AS USERCOMPANY
ON USERCOMPANY.ID = USERTIMESHEET.USERID
WHERE 1=1
AND YEAR(USERTIMESHEET.LOGIN_DATE) = @YEAR
AND USERTIMESHEET.LOGIN_DATE = @DATE
GROUP BY USERCOMPANY.COMPANY,
USERTIMESHEET.USERID,
USERTIMESHEET.TYPE,
USERTIMESHEET.LOGIN_DATE) AS USERTIMESHEETLIST
No comments:
Post a Comment