Pular para o conteúdo
  • Este tópico contém 0 resposta, 1 voz e foi atualizado pela última vez 10 anos, 6 meses atrás por Avatar de Gustavo SoaresGustavo Soares.
Visualizando 1 post (de 1 do total)
  • Autor
    Posts
  • #106619
    Avatar de Gustavo SoaresGustavo Soares
    Participante

      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

      [td]0001

      ID_TITULO DT_VENC VALOR[/TD]
      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 dia

      notem 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’) + 1

      ELSE TO_DATE(VENCREAL,’YYYYMMDD’) END AS “NOVO VENCIMENTO”,
      SALDO

      FROM 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,71

      falta 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!

    Visualizando 1 post (de 1 do total)
    • Você deve fazer login para responder a este tópico.
    plugins premium WordPress