- Este tópico contém 0 resposta, 1 voz e foi atualizado pela última vez 10 anos, 6 meses atrás por Gustavo Soares.
-
AutorPosts
-
14 de maio de 2014 às 2:40 am #106619Gustavo SoaresParticipante
Prezados, boa tarde sou iniciante em Oracle e peguei recentemente um relatório que está me tirando o sono, já pesquisei bastante mas não encontro a solução correta, procurando encontrei este fórum, espero que possam me ajudar, eis a situação:
possuo duas tabelas uma com saldos bancários e outras com movimentações a receber, e preciso fazer um relatório projetado baseado nas datas das movimentações a receber, supondo que elas ocorram somando ao ultimo saldo na tabela de saldos bancários, algo como:
TAB_SALDOS
COD_BANCO DT_SALDO VL_SALDO 341 10/05/2014 1000.00 341 09/05/2014 1500.00 …
TAB_MOV
ID_TITULO DT_VENC VALOR[/TD] [td]0001 10/05/2014 10/05/2014 0182 13/05/2014 650.00 7625 13/05/2014 100.00 6254 14/05/2014 750.00 6500 15/05/2014 100.00 5422 15/05/2014 200.00 3322 15/05/2014 300.00 …
a situação seria, tomando como base a data de hoje (13/05/2014), o ultimo saldo bancário é 10/05/2014, 1000.00
então o resultado seria algo como:
TAB_TEMP
DT_SALDO SALDO 13/05/2014 1750.00 14/05/2014 2500.00 15/05/2014 3100.00 …
13/05/2014 – 1750.00 — saldo bancário de 1000.00 + 750.00 do dia
14/05/2014 – 2500.00 — saldo anterior de 1750.00 + 750.00 do dia
15/05/2014 – 3100.00 — saldo anterior de 2500.00 + 600.00 do dianotem que os valores estão agrupados por data, e esqueci de dizer que se a data do vencimento for uma sexta-feira, eu preciso apresenta-la no relatório como a próxima segunda-feira, uma vez que o banco só disponibiliza o valor em dias uteis (essa parte eu consegui resolver)
Montando o quebra-cabeças, eu busco o ultimo saldo através de:
SELECT VL_SALDO
FROM Tab_Saldos
WHERE DT_SALDO = ( SELECT MAX(DT_SALDO) as DATA_SALDO FROM Tab_Saldos
WHERE BANCO = ‘104’ ) and BANCO = ‘104’Buscando os valores por vencimento e caso seja sexta apresentando como segunda:
SELECT “NOVO VENCIMENTO”, SUM(SALDO)
FROM (
SELECT CASE TO_CHAR(TO_DATE(VENCREAL,’yyyymmdd’), ‘D’,’nls_date_language=portuguese’)
WHEN ‘6’ THEN TO_DATE(VENCREAL,’YYYYMMDD’) + 3
WHEN ‘7’ THEN TO_DATE(VENCREAL,’YYYYMMDD’) + 2
WHEN ‘1’ THEN TO_DATE(VENCREAL,’YYYYMMDD’) + 1ELSE TO_DATE(VENCREAL,’YYYYMMDD’) END AS “NOVO VENCIMENTO”,
SALDOFROM Tab_Mov
WHERE VENCREAL BETWEEN ‘20140513’ AND ‘20140515’ SALDO > 0 )
GROUP BY “NOVO VENCIMENTO”
ORDER BY “NOVO VENCIMENTO”
Essa consulta me retorna os valores agrupados corretamente:
14/05/14 603558,99
15/05/14 873579,71falta agora o saldo bancário como saldo inicial e os somatórios e estou parado nisso, pesquisei muito sobre Running Total mas não consigo implementa-lo na minha situação, principalmente por no caso o saldo inicial da soma estar em uma tabela diferente de onde o resto do calculo prossegue…
Alguém tem uma luz?
Desde já agradeço!
-
AutorPosts
- Você deve fazer login para responder a este tópico.