Soma acumulada com filtro por data com a cláusula OVER(Transact-sql).

Conforme a documentação da Microsoft, a cláusula OVER é utilizada quando se deseja computar valores agregados como médias móveis, agregações cumulativas, uma soma acumulada, ou os primeiros N resultados por grupo. Sendo assim, ela

(…) determina o particionamento e a ordenação de um conjunto de linhas antes da aplicação da função de janela associada. Isto é, a cláusula OVER define uma janela ou conjunto de linhas especificado pelo usuário em um conjunto de resultados de consulta. Uma função de janela computa um valor para cada linha na janela.

A seguir, demonstramos no exemplo abaixo como realizar uma soma acumulada de um determinado período utilizando a cláusula OVER em conjunto com a cláusula WHERE.

soma acumulada com cláusula OVER

Para calcular este valor acumulado, utilizamos o seguinte código SQL em edição direta:

SELECT Somatorio.E3TimeStamp, Somatorio.Campo, Sum(Somatorio.Campo) OVER(ORDER BY Somatorio.E3TimeStamp) AS Acumulado
FROM Somatorio WHERE(Somatorio.E3TimeStamp >=#<%DataInicial%># AND Somatorio.E3TimeStamp <=#<%DataFinal%>#)
ORDER BY Somatorio.E3TimeStamp ASC

Para utilizar esta aplicação exemplo, é necessário configurar o banco de dados no Elipse E3 para que este aponte para um banco de dados criado no SQL Server Management Studio; então, quando a aplicação for executada, serão inseridos alguns registros através do botão Gravar Registro:

Requisitos:

–  Banco de dados SQL Server;
– E3 Versão 5.0.329 ou superior;

Artigos relacionados


Anexos:

ProjetoSomatorio.zip

Este artigo foi útil? Was this post helpful?
Yes0
No0

Leave a Reply

Your email address will not be published.Required fields are marked *