Не существует подхода, основанного на SET, поскольку SQL предназначен для агрегирования по строкам, а не по столбцам.
Я бы действительно ожидал, что CASE будет довольно быстрым ...
CASE WHEN Q4 <> 0 THEN Q4
WHEN Q3 <> 0 THEN Q3
WHEN Q2 <> 0 THEN Q2
WHEN Q1 <> 0 THEN Q1
ELSE NULL
END
Однако существует альтернатива с использованием NULL и COALESCE ...
COALESCE(NULLIF(Q4, 0), NULLIF(Q3, 0), NULLIF(Q2, 0), NULLIF(Q1, 0))