Depois dos posts do Miguel procurei no SQL Server um recurso similar ao explicado por ele das janelas para funções agregadas. No SQL Server existe o OVER, entretanto com opções mais limitadas, não existindo a cláusula RANGE.
Para conseguir o mesmo resultado tive que utilizar sub-queries, o que tira toda a facilidade da operação. Para exemplificar o terceiro exemplo do Oracle apresentado pelo Miguel que tinha o seguinte SQL (http://sqlbrasil.blogspot.com/2010/07/funcoes-agregadas-em-janelas-no-oracle.html):
Select as_of_date, pais, num_users,
sum(num_users) over(partition by pais
order by as_of_date
range extract(day from as_of_date)-1 preceding ) acum_mes
from tst_janela3
order by 1,2;
tive que resolver da seguinte maneira no SQL Server:
Select as_of_Date, pais, num_users,
(Select sum(num_users)
from tst_Janela3 b
where b.as_of_date >= a.as_of_date - DAY(a.as_of_date) + 1
and b.as_of_date <= a.as_of_date
and a.pais = b.pais) as acum_mes
from tst_janela3 a
order by 1, 2;
Nenhum comentário:
Postar um comentário