- Este tópico contém 3 respostas, 3 vozes e foi atualizado pela última vez 13 anos, 3 meses atrás por rman.
-
AutorPosts
-
13 de outubro de 2011 às 6:25 pm #101259filipedcParticipante
Pessoal,
Tenho uma query aqui que trago uma coluna contendo debito e outra contendo credito, fiz uma function que me retorna o somatorio dos saldos das contas da empresa, preciso fazer agora uma coluna acumulado que pega o saldo retornado pela function e va somando ou subtraindo desse saldo.
ex:
saldo : 30
debito credito acumulado
-10 0 20
0 20 40So que o problema e que quando faco um sum ele sempre soma o mesmo valor do saldo com a linha, ou seja, ele pega os 30 soma com os –10 no primeiro acumulado ele fica 20, na segunda linha ele soma o saldo novamente que e de 30 com o credito de 20 ficando 50 no acumulado.
Espero ter conseguido explicar minha duvida.
Aguardo respostas.
Filipe
13 de outubro de 2011 às 8:21 pm #101263burgaParticipantePosta seu código aqui pra gente poder ver o que você está fazendo e poder opinar… No mais, pelo que você explicou, é o SUM mesmo que você irá utilizar.
13 de outubro de 2011 às 8:51 pm #101264filipedcParticipante#Burga
O codigo ta abaixo ai com o sum ja tentei e ele vai somando so que ele nao vai alterando o valor do saldo acho que porque estou usando funcao pra trazer o valor do saldo?!?!?!? enfim nao sei.
SELECT
M.DTLANC AS “Data”,
C.CODEMP AS “Empresa”,
(SELECT P.RAZAOSOCIAL FROM TGFPAR P, TGFFIN F WHERE P.CODPARC = F.CODPARC AND F.NUBCO = M.NUBCO) AS “Parceiro”,
CASE WHEN M.ORIGMOV = ‘F’ THEN (SELECT F.HISTORICO FROM TGFFIN F WHERE F.NUBCO = M.NUBCO) ELSE M.HISTORICO END AS “Histórico”,
CASE WHEN M.ORIGMOV = ‘F’ THEN ‘Financeiro’ ELSE ‘Bancário’ END AS “Origem”,
M.NUMDOC AS “Documento”,
C.DESCRICAO AS “Pago / Recebido por”,
H.DESCRLANCBCO AS “Espècie”,
CASE WHEN M.CONCILIADO = ‘S’ THEN ‘SIM’ ELSE ‘NÃO’ END AS “Conciliado”,
M.DHCONCILIACAO AS “Data Conciliação”,
F_TIPMOV(T.TIPMOV) AS “Tip. Mov.”,
CASE WHEN M.RECDESP=1 THEN M.VLRLANC ELSE 0 END AS “Crédito”,
CASE WHEN M.RECDESP=-1 THEN (M.VLRLANC)*-1 ELSE 0 END AS “Débito”,
SALDO_CAIXA(0,[DtLancto1],C.CODEMP) AS “Saldo”
FROM TGFMBC M
INNER JOIN TSICTA C ON ( C.CODCTABCOINT = M.CODCTABCOINT )
INNER JOIN TGFHBC H ON ( H.CODLANC = M.CODLANC )
INNER JOIN TGFTOP T ON ( T.CODTIPOPER = M.CODTIPOPER )
WHERE
M.DTLANC >= [DtLancto1]
AND M.DTLANC <= [DtLancto2]
AND C.CODEMP = [CodEmp]
GROUP BY
M.DTLANC,
C.CODEMP,
M.HISTORICO,
M.ORIGMOV,
CASE WHEN M.ORIGMOV = 'F' THEN 'Financeiro' ELSE 'Bancário' END ,
M.NUMDOC ,
C.DESCRICAO ,
H.DESCRLANCBCO ,
M.CONCILIADO,
M.DHCONCILIACAO ,
M.RECDESP,
C.CODEMP ,
M.NUBCO ,
T.TIPMOV,
M.RECDESP,
M.VLRLANC
ORDER BY M.DHCONCILIACAO, M.RECDESP, M.NUMDOC13 de outubro de 2011 às 9:24 pm #101267rmanParticipante@filipedc
Creio que a solução é o uso de função analítica.
Segue o seguinte artigo com exemplo de saldo acumulado:
http://jorgesbrainstorm.blogspot.com/20 … s-sum.html
-
AutorPosts
- Você deve fazer login para responder a este tópico.