2017-01-09 13 views
-3

enter image description hereSQLテーブルデータを選択

私は画像のようなテーブルを持っています。ここでは、ユーザー 'A'にはId = 2のアウト・タイムはありません。 MyTableからUserId、Name、MIN(inTime)、およびMAX(outtime)を選択すると、First InTimeとLast OutTimeが表示されます。そのようなものを選択するのではなく、最後にUser 'A'をnullに設定したいと思います。どのように可能ですか?デフォルトではアドバンス

+0

http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images- 285557#285557 –

答えて

0

私はあなたがSQL Serverを使用していると仮定:

select * 
from(select name, userid, dateatt 
    from table 
    group by name, userid, dateatt)t 
cross apply(select top 1 intime from table 
      where userid=t.userid and dateatt=t.dateatt order by id)i 
cross apply(select top 1 outtime from table 
      where userid=t.userid and dateatt=t.dateatt order by id desc)o 
+0

Giorgi Nakeuri、ありがとうございました。 – DevinBegin

0

おかげデータを評価する際、MAXとMINはNULLが含まれていません。

下記のクエリを参照してください。hereから取得しました。

我々はどこにでも私たちのデータに上がってくることはありません将来のある期日に任意のNULL終了日を置き換えるためにCOALESCEを使用しますが、2099年12月31日には、このための合理的な日付のように思えます。次に、我々はNULLのうちの12/31/2099として評価され、私たちのテーブル内の他のどの日付よりも大きい日付のMAXを取る。それをCASE文で囲み、2013年12月31日の日付をNULLに戻し、StoreIDでデータをグループ化します。

SELECT Name, CASE WHEN MAX(COALESCE(outtime, ’12/31/2099′)) = ’12/31/2099′ THEN NULL ELSE MAX(outtime) END AS outtime FROM WorkSchedule GROUP BY Name