Su método es bastante razonable. Buena captura en el nullif() en el sum() , de paso. Aunque el else cláusula es calculado solo después de then , los componentes de else se calculan durante la agregación, por lo que log(0) devolvería un error.
Creo que hay algunas formas más sencillas de calcular el signo, como:
power(-1, sum(case when column1 < 0 then 1 else 0 end))
o:
(case when sum(case when column1 < 0 then 1 else 0 end) % 2 = 0 then 1 else -1 end)
Sin embargo, qué versión es "más simple" es una cuestión de opinión.