【发布时间】:2018-10-22 04:50:57
【问题描述】:
我有以下数据:
CREATE TABLE TimeLog
(
[User] NVARCHAR(6),
[Event] NVARCHAR(3),
[Time] DATETIME
);
INSERT INTO TimeLog
VALUES (N'Mark', N'IN', '2015-04-15 00:31:00'),
(N'Mark', N'IN', '2015-04-16 20:10:00'),
(N'Mark', N'IN', '2015-04-21 14:59:00'),
(N'Mark', N'OUT', '2015-04-22 01:01:00'),
(N'Mark', N'IN', '2015-04-22 10:46:00'),
(N'Mark', N'OUT', '2015-04-23 00:58:00'),
(N'Mark', N'IN', '2015-04-23 14:50:00'),
(N'Mark', N'OUT', '2015-04-24 01:37:00'),
(N'Mark', N'OUT', '2015-04-25 01:01:00'),
(N'Mark', N'OUT', '2015-04-27 00:57:00'),
(N'Mark', N'IN', '2015-04-17 10:32:00'),
我已使用查询将 IN 和 OUT 分隔到不同的列:
SELECT
[UserName], [IN], [OUT]
FROM
(SELECT
ROW_NUMBER() OVER (PARTITION BY [UserName] ORDER BY [EventTime]) + ROW_NUMBER() OVER (PARTITION BY [UserName] ORDER BY [EventTime]) % 2 AS [PairID],
*
FROM
[dbo].[AttendanceEvents]
WHERE
UserName = 'Mark') DS
PIVOT
(MAX([EventTime])
FOR [EventName] IN ([IN], [OUT])
) PVT
ORDER BY
[PairID];
现在我想将此查询的结果存储到一个变量或一个表中,以便从每个 Datetime 列、IN 和 OUT 两列中找出平均时间。
我该怎么做?
【问题讨论】:
-
请提供您的预期输出
-
请注意,将输入和输出分隔到不同列的查询会跳过值 - 例如,
15.04.2015 00:31:00的IN事件、17.04.2015 10:32:00的IN事件、OUT事件24.04.2015 01:37:00的所有位置都在数据透视查询的结果中丢失。
标签: sql-server database ssms