您好我是sql server的新手,我有一些数据包含有关电话接线员,电话簿和登录时间的信息。 样本数据如下所示
telephone_operator telephone_table log_in_time
user1 0302 2014-10-08 09:06:00
user1 0302 2014-10-08 12:07:00
user2 0302 2014-10-08 10:10:00
user1 0302 2014-10-08 13:30:00
user2 0302 2014-10-08 11:03:00
user3 0308 2014-10-08 11:03:00
user3 0308 2014-10-08 13:20:00
我需要在电话桌上为每个事件找到每个用户的注销时间。
想要像这样的输出
telephone_operator telephone_table log_in_time Logout_time
user1 0302 2014-10-08 09:06:00 2014-10-08 10:10:00
user2 0302 2014-10-08 10:10:00 2014-10-08 11:03:00
user2 0302 2014-10-08 11:03:00 2014-10-08 12:07:00
user1 0302 2014-10-08 12:07:00 2014-10-08 13:30:00
user1 0302 2014-10-08 13:30:00 NUll(or) 2111-11-11 00:00:00
user3 0308 2014-10-08 11:03:00 2014-10-08 13:20:00
user3 0308 2014-10-08 13:20:00 NUll(or) 2111-11-11 00:00:00
这是我目前尝试解决的问题:
SELECT [user], [table], [login] ,
ROW_NUMBER() OVER
(PARTITION BY [table] ORDER BY [login]) AS LoginOccurrenceSortedByDate
INTO #loginlogout
FROM [dbo].[2014Logindata]
ALTER TABLE #loginlogout add logout smalldatetime
答案 0 :(得分:0)
试试这个:
SELECT
telephone_operator,
telephone_table,
log_in_time,
COALESCE((SELECT min(log_in_time)
FROM <tablename>
WHERE t1.log_in_time < log_in_time
AND t1.telephone_table = telephone_table),'2111-11-11') as Logout_time
FROM <tablename> t1