根据下一个人登录sql server计算注销时间

时间:2014-10-21 08:35:32

标签: sql-server date datetime

您好我是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 

1 个答案:

答案 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