2017-01-12 20 views
0

no(auto increment),user(varchar)timein (timestamp)timeout (timestamp)からなるデータベーステーブルがあります。SQL SELECT distinct query

私は複数のユーザーのタイムアウトとタイムアウトを取得したいのですが、問題が発生しています。

私が得ることができる最も近いからです:私が得る出力が

SELECT * FROM userdata WHERE no IN (SELECT MIN(no) FROM userdata GROUP BY user) 
UNION 
SELECT * FROM userdata WHERE no IN (SELECT MAX(no) FROM userdata GROUP BY user) 

されています:

[{"no":"1","user":"Alan","timein":"2017-01-12 12:31:19","timeout":"0000-00-00 00:00:00"},{"no":"3","user":"Alan","timein":"2017-01-12 12:34:00","timeout":"2017-01-12 12:34:00"}] 

は私が個別のユーザーを得ることができる方法はあります(その出力は繰り返しません) MIN(timein)とMAX(timeout)を1行に表示するSQL?

所望の出力:{ "ユーザー": "アラン"、 "timein": "12時31分19秒"、 "タイムアウト": "12時34分00秒"}

|---------------------|------------------|------------|------------| 
|   no   |  user   | timein | timeout | 
|---------------------|------------------|------------|------------| 
|   1   |  Alan  |12:31:19 | 12:31:19 | 
|---------------------|------------------|------------|------------| 
|   2   |  Bill  |12:33:00 | 12:33:00 | 
|---------------------|------------------|------------|----------- | 
|   3   |  Alan  |12:34:00 | 12:34:00 | 
|---------------------|------------------|------------|----------- | 

答えて

2
SELECT user, MIN(timein), MAX(timeout) 
FROM userdata 
GROUP BY user 

これを試してみてください。文でグループを使用してください。おそらくそれが役に立ちます。

+0

これを試してみてください! –

0

これは、私は必要なもののおかげで

SELECT ROW_NUMBER() OVER(ORDER BY user) AS no,user, MIN(timein), MAX(timeout) 
FROM USER_TABLE GROUP BY user