ROUND の組み合わせを使用する 、 EXP , SUM および ログ
SELECT ROUND(EXP(SUM(LOG([Col A]))),1)
FROM yourtable
SQL フィドル:https://sqlfiddle.com/#!3/d43c8/2/ 0
説明
ログ col a ex の対数を返します。 LOG([Col A]) 戻る
0
0.6931471805599453
1.0986122886681098
1.3862943611198906
次に SUM を使用します それらをすべて一緒に追加するには SUM(LOG([Col A])) 戻る
3.1780538303479453
次に、その結果の指数が EXP(SUM(LOG(['3.1780538303479453'])) を使用して計算されます 戻る
23.999999999999993
次に、これは最終的に ROUND を使用して丸められます ROUND(EXP(SUM(LOG('23.999999999999993'))),1)コード> 24 を取得する
追加回答
簡単な解決方法:
0 の場合 あなたのデータで
SELECT ROUND(EXP(SUM(LOG([Col A]))),1)
FROM yourtable
WHERE [Col A] != 0
0しかない場合 次に、上記の結果は NULL になります .
SELECT (ROUND(exp(SUM(log(CASE WHEN[Col A]<0 THEN [Col A]*-1 ELSE [Col A] END))),1)) *
(CASE (SUM(CASE WHEN [Col A] < 0 THEN 1 ELSE 0 END) %2) WHEN 1 THEN -1 WHEN 0 THEN 1 END) AS [Col A Multi]
FROM yourtable
入力例:
1
2
3
-4
出力:
Col A Multi
-24
SQL フィドル:https://sqlfiddle.com/#!3/01ddc/3/ 0