Início > Artigos > BI Online com Saldo Acumulado

BI Online com Saldo Acumulado

Neste artigo iremos demonstrar um exemplo de criação de um BI Online demonstrando o saldo acumulado do dia anterior, partindo de um Saldo Inicial pré-definido.

Primeiramente, criaremos uma tabela temporária que irá armazenar nossos dados de demonstração:

IF object_id('tempdb..#Acumular') IS NOT NULL 
BEGIN
     DROP TABLE #Acumular
END

CREATE TABLE #Acumular (
Id INT IDENTITY(1, 1),
Valor NUMERIC(15, 5),
ValorAcumulado NUMERIC(15, 5))

INSERT INTO #Acumular VALUES (10, 0.00)
INSERT INTO #Acumular VALUES (20, 0.00)
INSERT INTO #Acumular VALUES (30, 0.00)

Declaramos 2 variáveis:

A variável Id irá armazenar um número auxiliar, que será usado para fazermos um while e percorrer os itens, acumulando o saldo.
A variável ValorAcumular deve receber o valor inicial, ou seja, o saldo que aparecerá na primeira linha do BI.

DECLARE @Id INT
DECLARE @ValorAcumular NUMERIC(15, 5)
SELECT @Id = 1
SELECT @ValorAcumular = 50

Após definir o valor inicial do saldo, fazemos o laço que irá percorrer a tabela temporária, alterando o valor do saldo e incrementando para atualizar de acordo com o valor da linha anterior:

WHILE @Id <= (SELECT TOP 1 Id FROM #Acumular (NOLOCK) ORDER BY Id DESC)

BEGIN
SELECT TOP 1 @ValorAcumular = @ValorAcumular + Valor FROM #Acumular (NOLOCK) WHERE Id = @Id
UPDATE #Acumular SET ValorAcumulado = @ValorAcumular WHERE Id = @Id
SELECT @Id = @Id + 1
END

Para ver o resultado, fazemos o select abaixo;

SELECT * FROM #Acumular

Após executar o comando acima teremos o seguinte resultado no BI:


Na primeira linha, o Valor Acumulado resultou em R$ 60,00, que é a soma dos R$ 50,00 do saldo inicial que tínhamos + o campo de valor de R$ 10,00.