Вы можете использовать apply
:
select cch_id, v.event_time, v.event_type
from t cross apply
(values ('e_type', e_date),
('c_type', c_date),
('o_type', o_date)
) v(event_type, event_time)
where v.event_time is not null;
Конечно, вы можете включать и другие столбцы.
APPLY
реализует функциональность, известную как боковое соединение . Такое разворачивание - это только один пример того, что могут сделать боковые соединения. Это хорошее введение в эту функцию.