2017-12-20 26 views
0

私はグループを使用できるデータセットを持っています。グループの後のMySQL getの値とnullの設定を持つ

例イベントテーブルが利用可能な場合、私は、好ましくは、null値を取得したい(イベントは終了していないかどうかを知りたい):

ID event finished 
1 event1 2017-01-01 
2 event2 NULL 
3 event3 2017-05-18 
4 event1 NULL 

SQL:

SELECT event, max(finished) FROM eventTable group by event 

は、不要な結果を与えます

event1 2017-01-01 
event2 NULL 
event3 2017-05-18 

結果が必要です(イベント1のNULL値を参照してください):

event1 NULL 
event2 NULL 
event3 2017-05-18 

ありがとうございました。

答えて

2

日付の最大値を示したが、その後はnull存在する他のnullを表示している場合は、チェックするために、条件付き集約を使用することができます

SELECT event, 
case when sum(finished is null) > 0 
    then null else max(finished) 
end as finished 
FROM eventTable 
group by event 

DEMO

+1

非常に素晴らしい解決策ですが、 "sum(finished is NULL)> 0"と書いてください。 –

+0

@DanielE意味的にはどちらも同じですが、あなたのものはより読みやすくなります –

+0

終了した場合、あなたのケースは2回以上動作しますか? @DanielE。 –

0

MAXの代わりにMINを使用します。試してみてくださいこの -

SELECT event 
     ,min(finished) 
FROM eventTable 
GROUP BY event 
+0

分maxと同じ結果が得られます - 利用可能であれば、この集計ではヌル値が好まれないようです – jir

1

使用将来のいくつかの日:

SELECT event, max(ifnull(finished, '2999-01-01')) 
FROM eventTable 
group by event ; 
関連する問題