У меня есть набор данных, где я могу использовать группу. Я хочу, желательно, получить нулевое значение, если оно доступно (хотите знать, если событие не завершено)
example eventTable:
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
результат я хочу (см. значение NULL в event1):
event1 NULL
event2 NULL
event3 2017-05-18
Какие-либо предложения? Спасибо.
Вы можете использовать условную агрегацию, чтобы проверить, существует ли нуль, а затем показать null еще показать max даты
SELECT event,
case when sum( finished is null) > 0
then null else max(finished)
end as finished
FROM eventTable
group by event
Используйте некоторую дату будущего:
SELECT event, max(ifnull(finished, '2999-01-01'))
FROM eventTable
group by event ;
Используйте MIN вместо MAX. Попробуй это -
SELECT event
,min(finished)
FROM eventTable
GROUP BY event