Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come trovare la moltiplicazione in esecuzione

Il tuo metodo è abbastanza ragionevole. Buona cattura su nullif() nel sum() , a proposito. Sebbene l'else clausola è calcolato solo dopo then , i componenti di else vengono calcolati durante l'aggregazione, quindi log(0) restituirebbe un errore.

Penso che ci siano alcuni modi più semplici per calcolare il segno, come ad esempio:

power(-1, sum(case when column1 < 0 then 1 else 0 end))

oppure:

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

Tuttavia, quale versione sia "più semplice" è una questione di opinione.