sql >> Database >  >> RDS >> Sqlserver

Lopende vermenigvuldiging vinden

Je methode is redelijk. Goede vangst op de nullif() in de sum() , trouwens. Hoewel de else clausule is pas berekend na de then , componenten van else worden berekend tijdens de aggregatie -- dus log(0) zou een fout retourneren.

Ik denk dat er een aantal eenvoudigere manieren zijn om het teken te berekenen, zoals:

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

of:

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

Welke versie "eenvoudiger" is, is echter een kwestie van mening.



  1. Eindeloze lus in triggerfunctie

  2. MySQL:hoe ouder-kind opvragen?

  3. Een aangepaste sortering implementeren

  4. Converteer afbeeldingsgegevenstype naar tekenreeks in SQL Server