Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment trouver la multiplication courante

Votre méthode est assez raisonnable. Bonne prise sur le nullif() dans le sum() , d'ailleurs. Bien que le else la clause est calculé uniquement après le then , les composants du else sont calculés lors de l'agrégation -- donc log(0) renverrait une erreur.

Je pense qu'il existe des moyens plus simples de calculer le signe, tels que :

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)

Cependant, quelle version est "la plus simple" est une question d'opinion.