Можно делать кумулятивное умножение (ниже запроса) с оконными функциямиНакопительное умножение функций окна ехр 'не является допустимым оконная функция
select Id, Qty
into #temp
from(
select 1 Id, 5 Qty
union
select 2, 6
union
select 3, 3
)dvt
select
t1.Id
,exp(sum(log(t2.Qty))) CumulativeMultiply
from #temp t1
inner join #temp t2
on t2.Id <= t1.Id
group
by t1.Id
order
by t1.Id
Как:
select
t1.Id
,exp(sum(log(t2.Qty))) over (partition by t1.Id order by t1.Id rows between unbounded preceding and current row) CumulativeMultiply
from #temp t1
inner join #temp t2
on t2.Id <= t1.Id
Но получаю ошибку :
The function 'exp' is not a valid windowing function, and cannot be used with the OVER clause
Обновление: Результат, который на самом деле я хочу:
Id CumulativeMultiply
----------- ----------------------
1 5
2 30
3 90
Вы только что ошиблись в своем брекетинге - вы хотите, чтобы «OVER» применялся к 'SUM', поэтому он должен быть * внутри * скобками для' EXP'. –
'exp()' не является агрегатом, поэтому он не может использоваться как функция окна –