sql >> Databáze >  >> RDS >> Sqlserver

Jak najít Běžící násobení

Vaše metoda je docela rozumná. Dobrý úlovek na nullif() v sum() , mimochodem. Ačkoli else klauzule je vypočítáno až po then , komponenty else se počítají během agregace -- takže log(0) vrátí chybu.

Myslím, že existuje několik jednodušších způsobů výpočtu znaménka, například:

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

nebo:

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

Nicméně, která verze je "jednodušší", je věcí názoru.



  1. Vnořené třídy - CustomRowMapper !! Už to není problém!! - Část 2

  2. SQL Server:Jak povolit schémata?

  3. Laravel:Generovaný SQL způsobí chybu pouze u konkrétních tabulek

  4. tabulky mysqldump bez vyprázdnění primárního klíče