Inquiridor
Dúvida Acumulção de Saldo SQL Server

Pergunta
-
Olá pessoal. Estou com uma dúvida referente a essa questão de saldo e gostaria de compartilhar com vocês para saber se alguém pode me auxiliar a resolver.
Eu criei uma procedure para retornar um extrato da conta "corrente" e 2 saldos... Eu usei o union all, assim dessa forma o saldo que está numa tabela de saldo somente será mostrado na primeira linha... as demais linha eu preciso trazer o saldo de acordo com a transação, Crédito ou Débito da conta... ou seja um valor de saldo acumulado.
Exemplo: (DESCRIÇÃO) VR_MOVIMENTO SALDO1 SALDO2
LINHA 1: SALDO ANTERIOR - 10000,00 5000,00LINHA 2: PAGAMENTO DE ENERGIA 100,00 9900,00 4900,00
LINHA 3: RECEBIMENTO DE VENDA 500,00 10400,00 5400,00
Esses saldos 1 e 2 são acumulativos...
Vocês têm alguma idéia de como resolver esse problema dentro do SQL Server modificando minha procedure?
A solução mais próxima que encontrei foi a seguinte...
TENHO 2 VARIÁVEIS @SALDO1 E @SALDO2
Que jogo nelas através de um select esses saldo anteriors...
As demais linhas deveriam ser: SALDO1 = SALDO1 + VR_MOVIMENTO (EM CASO DE CRÉDITO) E EM CÁSO DE DÉBITO SALDO1=SALDO1+VR_MOVIMENTO.
Se alguém puder me ajudar ficaria grato.
Att
Charles
Charles Tempo Rocha- Movido Gustavo Maia Aguiar sexta-feira, 18 de setembro de 2009 17:25 (De:SQL Server - Desenvolvimento Geral)
Todas as Respostas
-
-
Boa Noite,
Essa seria uma pergunta mais pertinente ao fórum "SQL Server - Programação Avançada" e não há "SQL Server - Gerenciamento, Configuração, Instalação, Segurança" já que é uma dúvida mais voltada a Transact SQL e não ao gerenciamento do produto, mas vamos lá. Segue um exemplo que poderá ajudá-lodeclare @t table (linha int, descricao varchar(200), vr_movimento smallmoney) insert into @t values (1,'SALDO ANTERIOR',0) insert into @t values (2,'PAGAMENTO DE ENERGIA',100) insert into @t values (3,'RECEBIMENTO DE VENDA',500) declare @saldo1ini smallmoney, @saldo2ini smallmoney select @saldo1ini = 10000, @saldo2ini = 5000 select linha, descricao, vr_movimento, @saldo1ini - (select SUM(vr_movimento) from @t As TInt WHERE TOut.linha >= TInt.linha) As Saldo1, @saldo2ini - (select SUM(vr_movimento) from @t As TInt WHERE TOut.linha >= TInt.linha) As Saldo2 from @t as TOut
Opcionalmente recomendo o Webcast abaixo:
Webcast - Dicas e truques sobre consultas complexas no SQL Server
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!162.entry
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com
Outra alternativa para concatenar registros no SQL Server
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!727.entry
Classifique as respostas. O seu feedback é imprescindível- Sugerido como Resposta Gustavo Maia Aguiar quarta-feira, 23 de setembro de 2009 23:05