私はテーブル 'LIST_USERS'を持っています。SQL select case group by
表の説明 -
USER_ID NUMBER(8)
LOGIN_ID VARCHAR2(8)
CREATE_DATE TIMESTAMP(6)
LOGIN_DATE TIMESTAMP(6)
表データ -
USER_ID LOGIN_ID CREATE_DATE LOGIN_DATE
---------------------------------------------------
101 test1 04/24/2016 null
102 test1 04/24/2016 04/29/2016
103 test2 04/25/2016 null
104 test2 04/26/2016 null
105 test3 04/27/2016 04/28/2016
106 test3 04/27/2016 04/29/2016
107 test4 04/28/2016 04/29/2016
987 test5 04/29/2016 null
109 test5 04/29/2016 null
108 test5 04/29/2016 04/29/2016
条件 - 私は最大LOGIN_DATEのもと 'LIST_USERS' テーブルからUSER_IDをフェッチする必要がある、とLOGIN_ID。 LOGIN_DATEがnullの場合、最大CREATE_DATEに基づいてレコードを取得する必要があります。
USER_ID LOGIN_ID
---------------------
102 test1
104 test2
106 test3
107 test4
108 test5
私は以下のクエリを使用しています -
は、私は以下の結果を取得する必要があります。しかし、私にはLOGIN_IDと 'Login_Or_Create_Date'だけが与えられますが、私はUSER_IDとLOGIN_IDが必要です。上記の結果だけでなく、USER_IDも取得できますか?
select LOGIN_ID,
(case when max(LOGIN_DATE) is null then max(CREATE_DATE)
else max(LOGIN_DATE) end) as Login_Or_Create_Date
from LIST_USERS;
ユーザーが同じ日に二回にログインした場合はどうなりますか?どちらをお持ちになりたいですか? –
アプリケーションにバグがあり、上記のシナリオが発生しています。基本的に私は最新のレコードを保持し、他のレコードをクリーンアップする必要があります。 – user2893856