sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo encontrar la multiplicación corriente

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.