0

私は次のdbテーブルを持っていますAPP_USERS

USER_NAME OLD_STATUS NEW_STATUS STATUS_CHANGE_DATE
-------------------------------------------------- ----------------------------
STEVE BALE LOGGED_OUT UNAVAILABLE 12/12/2012 5:04:24.736437 AM
STEVE BALE UNAVAILABLE AVAILABLE 12/12/2012 6:04:24.736437 AM
STEVE BALE AVAILABLE UNAVAILABLE 12/12/2012 7:31:08.591801 AM
STEVE BALE UNAVAILABLE AVAILABLE 12/12/2012 7:41:46.373138 AM
STEVE BALE AVAILABLE UNAVAILABLE 12/12/2012 8:30:21.218388 AM
STEVE BALE UNAVAILABLE AVAILABLE 12/12/2012 9:24:27.812461 AM
STEVE BALE AVAILABLE UNAVAILABLE 12/12/2012 10:44:52.724405 AM
STEVE BALE UNAVAILABLE LOGGED_OUT 12/12/2012 11:30:50.724405 AM

各ステータスのユーザーステータスの開始日時と終了日時を表示する必要があります。

2012年12月12日5:04:24.736437AMから2012年12月12日6:04:24.736437AMまでユーザーが利用できないようなもの。

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 に答える