0

我有以下数据库表APP_USERS

USER_NAME OLD_STATUS NEW_STATUS STATUS_CHANGE_DATE
-------------------------------------------------- ----------------------------
STEVE BALE LOGGED_OUT 不可用 2012 年 12 月 12 日上午 5:04:24.736437
STEVE BALE 不可用 2012 年 12 月 12 日上午 6:04:24.736437 可用
STEVE BALE 可用 不可用 2012 年 12 月 12 日上午 7:31:08.591801
STEVE BALE 不可用 2012 年 12 月 12 日上午 7:41:46.373138 可用
STEVE BALE 可用 不可用 2012 年 12 月 12 日上午 8:30:21.218388
STEVE BALE 不可用 2012 年 12 月 12 日上午 9:24:27.812461 可用
史蒂夫·贝尔 可用 不可用 2012 年 12 月 12 日上午 10:44:52.724405
STEVE BALE 不可用 LOGGED_OUT 2012 年 12 月 12 日上午 11:30:50.724405

我必须显示每个状态的用户状态开始日期和时间以及结束日期和时间。

从 2012 年 12 月 12 日上午 5:04:24.736437 到 2012 年 12 月 12 日上午 6:04:24.736437 的用户不可用。

4

1 回答 1

3

您只需要“下一个”记录,因为状态似乎正在发生变化。您可以使用前导函数执行此操作:

select user_name, new_status, status_change_date as StartTime,
       lead(status_change_date) over (partition by user_name order by status_change_date) as EndTime
from app_users
于 2012-12-13T19:51:22.283 回答