On the msdn machine, log10 and power functions are reversely related to each other. For example, 10 ^ log10 (n) = n. There is no problem when there is only one value. The result set is shown below .; With CAS (select number from master .. spt_values where number between 1 and 10 and type in ('P') Select power (10, sum (log10 (number ))) from C/* 3628800 */-- use a variable certificate to declare @ I intset @ I = 1; with CAS (select number from master .. spt_values where number between 1 and 10 and type in ('P ')) select @ I = @ I * number from cselect @ I/* 3628800 */-- the same as the correct go -- change the variable parameter number to declare @ t table (number INT) insert @ tselect 1 Union all select 2 Union allselect 4 select power (10, sum (log10 (number ))) from @ t/* 7 */declare @ I intset @ I = 1 select @ I = @ I * number from @ tselect @ I/* 8 */-- the result is incorrect. instead, more accurate. Select exp (sum (log (number) from @ t/* 8 */conclusion: Do not use the log10 logarithm when the result set is multiplied, you can also customize the number of letters.