sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man hittar löpande multiplikation

Din metod är ganska rimlig. Bra fångst på nullif() i sum() , förresten. Även om else klausul är beräknas endast efter then , komponenter av else beräknas under aggregeringen -- så log(0) skulle returnera ett fel.

Jag tror att det finns några enklare sätt att beräkna tecknet, till exempel:

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

eller:

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

Vilken version som är "enklare" är dock en åsiktsfråga.



  1. Python Oracle DB Connect utan Oracle Client

  2. Förbättrat skript som returnerar alla egenskaper från SERVERPROPERTY() i SQL Server

  3. #1214 - Den använda tabelltypen stöder inte FULLTEXT-index

  4. Uppdatera formuläret med Ajax, PHP, MYSQL