Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como encontrar a multiplicação em execução


Seu método é bastante razoável. Boa captura no nullif() na sum() , a propósito. Embora o else cláusula é computado somente após o then , os componentes do else são calculados durante a agregação -- então log(0) retornaria um erro.

Acho que existem algumas maneiras mais simples de calcular o sinal, como:
power(-1, sum(case when column1 < 0 then 1 else 0 end))

ou:
(case when sum(case when column1 < 0 then 1 else 0 end) % 2 = 0 then 1 else -1 end)

No entanto, qual versão é "mais simples" é uma questão de opinião.