SQL SERVER 提供了SUM、COUNT、MAX、MIN、AVG等聚合函数,但是没有提供连乘的函数,但是在实际开发过程中,我们可能会用到连乘的数据,所以我们可以自己实现连乘的写法,测试数据:
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([num] int)
Insert #T
select 1 union all
select 2 union all
select 3 union all
select 4 union all
select 5
Go
--测试数据结束
普通的实现方式:
DECLARE @I BIGINT
SET @I = 1
SELECT @I = @I * ISNULL([num], 1)
FROM #T
SELECT @I
结果:
上边是一般写法,我们可以用数学的方式实现连乘形式:
SELECT EXP(SUM(LOG(#T.num)))
FROM #T
结果同上边一样:
以上我们实现了连乘的写法。