34,593
社区成员
发帖
与我相关
我的任务
分享
IF OBJECT_ID(N'TEMPDB.DBO.#T') IS NOT NULL
DROP TABLE #T
GO
CREATE TABLE #T
(ID INT IDENTITY(1,1),
EMP_ID VARCHAR(5),
WORK_DATE DATETIME,
BEGIN_DATE DATETIME,
END_DATE DATETIME)
INSERT INTO #T
SELECT '1','2019-5-1','2019-5-1 07:45','2019-5-1 17:45' UNION ALL
SELECT '2','2019-5-1','2019-5-1 07:55','2019-5-1 17:42' UNION ALL
SELECT '3','2019-5-1','2019-5-1 07:49','2019-5-1 17:47' UNION ALL
SELECT '1','2019-5-2','2019-5-2 07:45','2019-5-2 17:45' UNION ALL
SELECT '2','2019-5-2','2019-5-2 18:55','2019-5-3 07:42'
WITH CTE
AS
(SELECT ID,EMP_ID,WORK_DATE,BEGIN_DATE,'IN' AS TYPE,DATEPART(D,WORK_DATE) AS WORK_DAY FROM #T
UNION ALL
SELECT ID,EMP_ID,WORK_DATE,END_DATE,'OUT' AS TYPE,DATEPART(D,WORK_DATE) AS WORK_DAY FROM #T)
SELECT CASE WHEN TYPE='IN' THEN EMP_ID ELSE '' END AS EMP_ID_NEW,TYPE,MAX(CONVERT(VARCHAR(5),CASE WHEN WORK_DAY=1 THEN BEGIN_DATE ELSE NULL END,108)) AS DAY_1,
MAX(CONVERT(VARCHAR(5),CASE WHEN WORK_DAY=2 THEN BEGIN_DATE ELSE NULL END,108)) AS DAY_2
FROM CTE
GROUP BY EMP_ID,TYPE
ORDER BY EMP_ID,TYPE