Попробуйте агрегировать с GROUP BY и использовать агрегирующие функции, такие как MIN ().
SELECT seriesKey,
MIN(eventStart) eventStart
FROM events
GROUP BY seriesKey;
В результате:
5000 2012-01-01 14:00:00.000
5001 2012-01-01 14:30:00.000
5002 2012-01-01 14:30:00.000
Если вас интересуют все столбцы из таблицы событий, а не только два вышеуказанных столбца, которые я выбрал, в некоторых базах данных (например, SQL Server) есть странная реализация, которая может вам помочь:
SELECT *
FROM events e1
WHERE e1.ID IN
(
SELECT TOP 1 e2.ID
FROM events e2
WHERE e2.seriesKey = e1.seriesKey
ORDER BY e2.eventStart
);
В результате:
1 Event1 5000 2012-01-01 14:00:00.000
2 Event2 5001 2012-01-01 14:30:00.000
6 Event2 5002 2012-01-01 14:30:00.000