Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да намерите текущо умножение

Вашият метод е доста разумен. Добър улов на nullif() в sum() , между другото. Въпреки че else клауза е изчислен само след then , компонентите на else се изчисляват по време на агрегацията -- така че log(0) ще върне грешка.

Мисля, че има някои по-прости начини за изчисляване на знака, като например:

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

или:

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

Коя версия обаче е "по-проста" е въпрос на мнение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разделянето води до текуща заявка за общи суми

  2. Защо в плана ми за изпълнение се показва нещо?

  3. SQL Server 2008 Trigger

  4. Как да избегнете състояние на състезание в базата данни, когато ръчно увеличавате PK на нов ред

  5. Обектът не може да бъде намерен, защото не съществува или нямате разрешения. Грешка в SQL Server