34,588
社区成员
发帖
与我相关
我的任务
分享
WITH table1([User],Time,INOUT) AS (
SELECT '张三',Convert(datetime,'2015-03-01 07:35:01',120),0 UNION ALL
SELECT '张三','2015-03-01 07:53:01',0 UNION ALL
SELECT '张三','2015-03-01 07:59:01',0 UNION ALL
SELECT '张三','2015-03-01 10:30:01',1 UNION ALL
SELECT '张三','2015-03-01 11:11:01',1 UNION ALL
SELECT '张三','2015-03-01 12:10:01',1 UNION ALL
SELECT '张三','2015-03-01 17:35:01',1 UNION ALL
SELECT '张三','2015-03-01 18:30:01',1
)
,a1 AS (
SELECT [user],
Convert(varchar(5),
CASE INOUT WHEN 0 THEN 'IN' ELSE 'OUT' END
) INOUT,
ROW_NUMBER()OVER(PARTITION BY User ORDER BY Time DESC) rn
FROM table1
)
,a2 AS (
SELECT 1 no, *
FROM a1
PIVOT (
MAX(INOUT)
FOR rn IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10])
) P
)
,b1 AS (
SELECT [user],
Convert(varchar(5),time,8) time,
ROW_NUMBER()OVER(PARTITION BY User ORDER BY Time DESC) rn
FROM table1
)
,b2 AS (
SELECT 2 no, *
FROM b1
PIVOT (
MAX(time)
FOR rn IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10])
) P
)
SELECT *
FROM (
SELECT * FROM a2
UNION ALL
SELECT * FROM b2
) t
ORDER BY [user], no
no user 1 2 3 4 5 6 7 8 9 10
----------- ---- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
1 张三 OUT OUT OUT OUT OUT IN IN IN NULL NULL
2 张三 18:30 17:35 12:10 11:11 10:30 07:59 07:53 07:35 NULL NULL