Pular para o conteúdo
  • Este tópico contém 58 respostas, 4 vozes e foi atualizado pela última vez 15 anos, 9 meses atrás por MARCIO_LOK.
Visualizando 15 posts - 16 até 30 (de 59 do total)
  • Autor
    Posts
  • #94483
    fsitja
    Participante

      A última questão é tranquilo, dá para filtrar na parte externa do código.

      Eu não estou com tempo de testar agora, mas à noite posto para você com essa alteração.

      Quanto ao problema de não existir número de conta na CLANCA, eu agora fiquei meio intrigado… como você identifica onde foi feito o lançamento se não há o número da conta lá?

      Poderia haver outra tabela que mapeie clanca para um número de conta, que não foi mencionada ainda?

      #94484
      MARCIO_LOK
      Participante

        Opa, resolvi a questao numero 2 e três, incluir este join(em negrito), dai deu certo…

        … from (select rpad(codconta, 20, ‘0’) codconta, descricao from cconta WHERE SubStr(codconta,1,1)=’3′) c
        left join (select rpad(c.codconta,20, ‘0’) codconta, l.*
        [b]FROM cLanca L join cConta C
        ON L.CodColigada = C.CodColigada
        AND (L.Credito = C.CodConta
        OR L.Debito = C.CodConta)…. [/b]

        Só a conta de nivel 1 que não está batendo…. vou fazer um pente fino nos dados para ver o que é….

        Poderia me ajudar a resolver a questao 4?
        Nao listar as contas que tem os valores em branco(zerado) no periodo?
        conforme mencionado acima?
        Valeu, brigadao

        #94487
        MARCIO_LOK
        Participante

          Ola amigo, entao eu ligo ela na cconta…. dai busca codconta na cconta… como mencionei, deu certo, consegui, resolver, só fantando mesmo a questao numero 4…. fazendo a questao numero credito…. despesas e receitas estarao pronto….
          Depois vou tentar tirar o saldo anterior…. (tabela CSDANT) dai deixo pronto tambem o ativo e passivo…. dai acabou j aera…

          tente entao testar a questao numero 4 por favor, e me mande se possivel.,
          brigadao fsitja.

          #94488
          MARCIO_LOK
          Participante

            mais um detalhe simples que nao consegui fazer…. 😕
            Deixar nessa sequencia…

            codconta descricao janeiro…fevereiro….etc

            hoje esta assim:
            descricao codconta janeiro….fevereiro….etc

            só mudar para codconta primeiro depois descricao… valeu

            #94498
            MARCIO_LOK
            Participante

              Bom dia fsitja

              Conseguiu testar a questao 4 para mim, to quebrando a cabeca aqui e nada, dificil, pacas, nem mudar a ordem de codigo e descricao to conseguindo……
              obrihgado, tenha um bom dia,

              #94499
              burga
              Participante

                Vou xeretar no tópico dos outros… hehehehe

                Segue uma sugestão pra questão 4 e alteração de ordem das colunas:

                Coloque todo seu select novamente na cláusula from de um novo select, e no novo select coloque as condições where janeiro != 0 or fevereiro !=0 or marco != 0… dezembro != 0

                Você pode alterar a ordem das colunas no novo select, ficando mais ou menos assim:

                select t.codconta, t.descricao, t.janeiro, t.fevereiro...
                from (SEU_SELECT) t
                where
                janeiro != 0 or fevereiro !=0 or marco != 0... dezembro != 0;

                Se eu estiver falando besteira ignore…

                #94502
                MARCIO_LOK
                Participante

                  VAleu pela forca, mais nao consegui resolver nao..

                  é nesta parte que ele faz o select que tras as informacoes…


                  select c.descricao,t.*
                  from (select DISTINCT coalesce(nivel1, nivel2, nivel3, nivel4 ,nivel5, nivel6, nivel7, nivel8, nivel9, nivel10, nivel11, nivel12, nivel13, nivel14, nivel15, nivel16, nivel17, nivel18, nivel19, nivel20) codconta,
                  Nvl(sum(jan),0) jan,
                  Nvl(sum(fev),0) fev,
                  Nvl(sum(mar),0) mar,
                  Nvl(sum(abr),0) abr,
                  Nvl(sum(mai),0) mai,
                  Nvl(sum(jun),0) jun,
                  Nvl(sum(jul),0) jul,
                  Nvl(sum(ago),0) ago,
                  Nvl(sum(sete),0) sete,
                  Nvl(sum(out),0) out,
                  Nvl(sum(nov),0) nov,
                  Nvl(sum(dez),0) dez,
                  nvl(sum(tot_ano),0) tot_ano,
                  Nvl(Round(sum(tot_ano),2),0)/12 media
                  from mov_mensal
                  group by grouping sets ((nivel1), (nivel2), (nivel3), (nivel4), (nivel5), (nivel6), (nivel7), (nivel8), (nivel9), (nivel10), (nivel11), (nivel12), (nivel13), (nivel14), (nivel15), (nivel16), (nivel17), (nivel18), (nivel19), (nivel20))
                  having (substr(nivel1, length(nivel1), 1) != '0')
                  or (substr(nivel2, length(nivel2), 1) != '0')
                  or (substr(nivel3, length(nivel3), 1) != '0')
                  or (substr(nivel4, length(nivel4), 1) != '0')
                  or (substr(nivel5, length(nivel5), 1) != '0')
                  or (substr(nivel6, length(nivel6), 1) != '0')
                  or (substr(nivel7, length(nivel7), 1) != '0')
                  or (substr(nivel8, length(nivel8), 1) != '0')
                  or (substr(nivel9, length(nivel9), 1) != '0')
                  or (substr(nivel10, length(nivel10), 1) != '0')
                  or (substr(nivel11, length(nivel11), 1) != '0')
                  or (substr(nivel12, length(nivel12), 1) != '0')
                  or (substr(nivel13, length(nivel13), 1) != '0')
                  or (substr(nivel14, length(nivel14), 1) != '0')
                  or (substr(nivel15, length(nivel15), 1) != '0')
                  or (substr(nivel16, length(nivel16), 1) != '0')
                  or (substr(nivel17, length(nivel17), 1) != '0')
                  or (substr(nivel18, length(nivel18), 1) != '0')
                  or (substr(nivel19, length(nivel19), 1) != '0')
                  or (substr(nivel20, length(nivel20), 1) != '0')) t

                   join cconta c on c.codconta = t.codconta
                  

                  order by t.codconta;

                  de qualquer forma obrigado!

                  #94503
                  burga
                  Participante

                    Tenta dessa forma…

                    select t.codconta, c.descricao,t.jan, t.fev,t.mar,t.abr,t.mai,t.jun,t.jul,t.ago,t.sete,t.out,t.nov,t.dez,t.tot_ano,t.media
                    from (select DISTINCT coalesce(nivel1, nivel2, nivel3, nivel4 ,nivel5, nivel6, nivel7, nivel8, nivel9, nivel10, nivel11, nivel12, nivel13, nivel14, nivel15, nivel16, nivel17, nivel18, nivel19, nivel20) codconta,
                    Nvl(sum(jan),0) jan,
                    Nvl(sum(fev),0) fev,
                    Nvl(sum(mar),0) mar,
                    Nvl(sum(abr),0) abr,
                    Nvl(sum(mai),0) mai,
                    Nvl(sum(jun),0) jun,
                    Nvl(sum(jul),0) jul,
                    Nvl(sum(ago),0) ago,
                    Nvl(sum(sete),0) sete,
                    Nvl(sum(out),0) out,
                    Nvl(sum(nov),0) nov,
                    Nvl(sum(dez),0) dez,
                    nvl(sum(tot_ano),0) tot_ano,
                    Nvl(Round(sum(tot_ano),2),0)/12 media
                    from mov_mensal
                    group by grouping sets ((nivel1), (nivel2), (nivel3), (nivel4), (nivel5), (nivel6), (nivel7), (nivel8), (nivel9), (nivel10), (nivel11), (nivel12), (nivel13), (nivel14), (nivel15), (nivel16), (nivel17), (nivel18), (nivel19), (nivel20))
                    having (substr(nivel1, length(nivel1), 1) != '0')
                    or (substr(nivel2, length(nivel2), 1) != '0')
                    or (substr(nivel3, length(nivel3), 1) != '0')
                    or (substr(nivel4, length(nivel4), 1) != '0')
                    or (substr(nivel5, length(nivel5), 1) != '0')
                    or (substr(nivel6, length(nivel6), 1) != '0')
                    or (substr(nivel7, length(nivel7), 1) != '0')
                    or (substr(nivel8, length(nivel8), 1) != '0')
                    or (substr(nivel9, length(nivel9), 1) != '0')
                    or (substr(nivel10, length(nivel10), 1) != '0')
                    or (substr(nivel11, length(nivel11), 1) != '0')
                    or (substr(nivel12, length(nivel12), 1) != '0')
                    or (substr(nivel13, length(nivel13), 1) != '0')
                    or (substr(nivel14, length(nivel14), 1) != '0')
                    or (substr(nivel15, length(nivel15), 1) != '0')
                    or (substr(nivel16, length(nivel16), 1) != '0')
                    or (substr(nivel17, length(nivel17), 1) != '0')
                    or (substr(nivel18, length(nivel18), 1) != '0')
                    or (substr(nivel19, length(nivel19), 1) != '0')
                    or (substr(nivel20, length(nivel20), 1) != '0')) t

                    join cconta c on c.codconta = t.codconta
                    where
                    t.jan != 0
                    or t.fev != 0
                    or t.mar != 0
                    or t.abr != 0
                    or t.mai != 0
                    or t.jun != 0
                    or t.jul != 0
                    or t.ago != 0
                    or t.sete != 0
                    or t.out != 0
                    or t.nov != 0
                    or t.dez != 0
                    order by t.codconta;

                    O where é o que eu falei, só pra filtrar as contas em que todos os meses possuem valor zero. Se quiser é só tirar o where dessa consulta.

                    #94508
                    MARCIO_LOK
                    Participante

                      ohhhh Perfeito valeuuuuuuuuuuuuuuuuuu

                      Agora só falta a outra parte da questao 4….
                      ou seja… nao exibir os codigos (niveis) de conta com valor zerado…


                      4) ultima coisa:
                      Existem algumas contas que nao trazem valor nenhum no mes....exemplo:
                      conta jan fev marc .....
                      1122 0 0 0 nao mostrar essa conta,
                      567 0 345 0 mostrar essa...pq tem movimento..

                      nao tras nenhum valor... eu queria que ele nao trouxesse, nao mostrasse as contas que nao tem valor.... se tiver valor em um dos meses pode trazer... nao é pra trazer se nao houver movimento no periodo... parece simples ne?
                      [/quote]

                      Brigadao, voces ja me ajudaram muito....

                      Aproveito para fazer a seguinte pergunta.... desculpe minha ignorancia, é coisa até simples....

                      nesta parte do codigo:[quote]
                      ....
                      to_char(data, 'YYYY') ano,
                      to_char(data, 'MM') mes,
                      [b] sum(case when debito is not null then -valor
                      when credito is not null then valor end) mov_liq_mes[/b]
                      from (select rpad(codconta, 20, '0') codconta, descricao from cconta c WHERE SubStr(codconta,1,1)='3') c
                      left join (select rpad(c.codconta,20, '0') codconta, l.*
                      FROM cLanca L join cConta C
                      ON L.CodColigada = C.CodColigada
                      AND (L.Credito = C.CodConta
                      OR L.Debito = C.CodConta)
                      where to_char(l.data, 'YYYY') = '2010') l on l.codconta = c.codconta
                      group by c.codconta, to_char(data, 'MM'), to_char(data, 'YYYY'))
                      group by codconta, nivel1, nivel2, nivel3, nivel4, nivel5, nivel6, nivel7, nivel8, nivel9, nivel10, nivel11, nivel12, nivel13, nivel14, nivel15, nivel16, nivel17, nivel18, nivel19, nivel20, ano)
                      -- end with
                      select t.codconta, c.descricao,t.jan, t.fev,t.mar,t.abr,t.mai,t.jun,t.jul,t.ago,t.sete,t.out,t.nov,t.dez,t.tot_ano,t.media
                      from (select DISTINCT coalesce(nivel1, nivel2, nivel3, nivel4 ,nivel5, nivel6, nivel7, nivel8, nivel9, nivel10, nivel11, nivel12, nivel13, nivel14, nivel15, nivel16, nivel17, nivel18, nivel19, nivel20) codconta,
                      Nvl(sum(jan),0) jan,
                      Nvl(sum(fev),0) fev, .....

                      Coloquei em negrito… ele faz a conta pra mim do que é ativo e passivo… tras o valor perfeitamente…
                      eu precisaria… incluir uma ultima tabela de saldo…

                      tentei assim, mais da erro:

                      ... to_char(data, 'MM') mes,
                      sum(case when debito is not null then -valor
                      when credito is not null then valor end)+O.Dez mov_liq_mes
                      from (select rpad(codconta, 20, '0') codconta, descricao from cconta c WHERE SubStr(codconta,1,1)='3') c
                      left join (select rpad(c.codconta,20, '0') codconta, l.*
                      FROM cLanca L join cConta C
                      ON L.CodColigada = C.CodColigada
                      AND (L.Credito = C.CodConta
                      OR L.Debito = C.CodConta)
                      [b]join Saldo O
                      ON O.CodConta = C.CodConta.....[/b]

                      Em negrito as alteracoes que fiz…
                      Entao, ele da erro… to tentando incluir mais uma tabela com o join Saldo O…. e depois em cima, somar o valor da tabela Saldo, campo Dez…
                      +O.Dez….
                      aonde eu teria que incluir esse join pra poder somar o valor ali?
                      Valeu..

                      #94517
                      fsitja
                      Participante

                        Vamos por partes 8)

                        O saldo seria feito através de “UNION ALL” com a tabela de lançamentos.

                        Mas o valor do saldo seria considerado como indo para qual coluna de mês? Sempre lança em Janeiro o saldo?

                        #94518
                        MARCIO_LOK
                        Participante

                          Beleza, vamos resolver primeiramente o problema das contas zeradas que nao é pra ele trazer, pode ser?

                          Depois a gente ve do saldo…
                          sobre o saldo……. to querendo descontar de todos os meses…
                          porque o ativo e o passivo é feito assim,….

                          Janeiro = valor(credito-debito)+saldo anterior
                          Feveiro = (ValordeJaneiro)+(credito-Debito)
                          e assim por diante..

                          acredito que se fizer assim..
                          Pedir pra filtrar o mes <= mes.
                          Mes=(movimentacao)+Saldo Anterior

                          obs: Movimentacao seria Credito-Debito da conta…

                          #94521
                          fsitja
                          Participante

                            Para tirar as contas zeradas é aquilo que o Burga postou, o where onde qualquer uma delas seja diferente de zero (col1 != 0 or col2 != 0 etc). Entendi que tinha funcionado…

                            O esquema do saldo ainda não caiu a ficha pra mim.

                            No momento cada coluna de mês exibe o somatório dos lançamentos naquele mês. Não seria só criar uma coluna “Saldo Anterior” e está feito?


                            DESCRICAO CODCONTA SALDO_ANTERIOR JAN FEV MAR TOT_ANO


                            1.0.0 1 7000 -27000 -26000 -62000 -115000
                            1.1.0 11 5000 -30000 -30000 -50000 -110000
                            1.1.1 111 20000 20000
                            1.1.2 112 -10000 -10000
                            1.2.0 12 2000 3000 4000 -12000 -5000
                            2.0.0 2 1000 600 600
                            2.1.0 21 500 500
                            2.1.1 211 300 300

                            #94522
                            MARCIO_LOK
                            Participante

                              Bom, sobre deixar em branco seria nesta parte aqui…


                              ...from (select DISTINCT coalesce(nivel1, nivel2, nivel3, nivel4 ,nivel5, nivel6, nivel7, nivel8, nivel9, nivel10, nivel11, nivel12, nivel13, nivel14, nivel15, nivel16, nivel17, nivel18, nivel19, nivel20) codconta,
                              Nvl(sum(jan),0) jan,
                              Nvl(sum(fev),0) fev,
                              Nvl(sum(mar),0) mar,
                              Nvl(sum(abr),0) abr,
                              Nvl(sum(mai),0) mai,
                              Nvl(sum(jun),0) jun,
                              Nvl(sum(jul),0) jul,
                              Nvl(sum(ago),0) ago,
                              Nvl(sum(sete),0) sete,
                              Nvl(sum(out),0) out,
                              Nvl(sum(nov),0) nov,
                              Nvl(sum(dez),0) dez,
                              nvl(sum(tot_ano),0) tot_ano,
                              Nvl(Round(sum(tot_ano),2),0)/12 media
                              from mov_mensal
                              WHERE ( jan !=0 OR fev !=0 OR mar !=0 OR abr !=0 OR mai !=0 OR jun !=0 OR jul !=0 OR ago !=0 OR sete !=0 OR out !=0 OR nov !=0 OR dez !=0)
                              group by grouping sets ((nivel1), (nivel2), (nivel3), (nivel4),...

                              É aqui???? Coloquei em negrito a alteração que fiz…

                              Sobre o esquema do saldo anterior, deixa tentar explicar….
                              Cada Conta….Cada mes… tem um valor correto?
                              Eu tenho uma tabela chamada Saldo, ok?
                              Nela, tem o saldo das contas referentes a dezembro de 2009, correto?

                              vamos para o ano de 2010… que é o que estamos trabalhando…
                              Com os dados de janeiro de 2010… alem do movimento mensal
                              que é

                              ... sum(case when debito is not null then -valor
                              when credito is not null then valor end) mov_liq_mes
                              ....

                              eu preciso adicionar o valor da tabela saldo… que só tem dois campos…
                              codconta e valor….

                              dai fevereiro, ficaria…
                              credito-debito… que é o codigo acima que vc ja desenvolveu, menos o valor de janeiro (ja incluido o saldo anterior)

                              Entendeu?

                              Por isso eu pensei, em pegar o valor de marco (por exemplo), somar os creditos menos os debitos de janeiro ate marco, e adcionar no final o valor da tabela SALDO, acho que assim funcionaria, entendeu?

                              #94525
                              fsitja
                              Participante

                                Tá, então esclarece mais uma coisa: sendo assim os valores que estão lá hoje não são o que você quer, é pra substituir eles por esse saldo acumulado?

                                Supondo então os lançamentos que você vê hoje:

                                Visão de LANÇAMENTOS (como está fazendo atualmente):

                                DESCRICAO CODCONTA SALDO_ANTERIOR JAN FEV MAR TOT_ANO


                                1.0.0 1 7000 -27000 -26000 -62000 -115000
                                1.1.0 11 5000 -30000 -30000 -50000 -110000
                                1.1.1 111 20000 20000
                                1.1.2 112 -10000 -10000
                                1.2.0 12 2000 3000 4000 -12000 -5000
                                2.0.0 2 1000 600 600
                                2.1.0 21 500 500
                                2.1.1 211 300 300

                                Você quer ver esses dados como saldo assim?

                                DESCRICAO CODCONTA SALDO_ANTERIOR SALDO_JAN SALDO_FEV SALDO_MAR SALDO_DEZ


                                1.0.0 1 7000 -20000 -46000 -108000 -108000
                                1.1.0 11 5000 -25000 -55000 -10500 -105000
                                1.1.1 111 0 0 20000 20000
                                1.1.2 112 0 0 0 -10000 -10000
                                1.2.0 12 2000 5000 9000 -3000 -3000
                                2.0.0 2 1000 1600 1600 1600 1600
                                2.1.0 21 0 500 500 500 500
                                2.1.1 211 0 300 300 300 300

                                Não teria mais “total” no fim pois como já é acumulado o total é o próprio mês de dezembro.

                                Explicando a primeira linha, da conta 1.0.0:
                                Em janeiro é saldo inicial (7000) – movimento de janeiro (-27000) = -20000.
                                Depois no mês de fevereiro fica o -20.000 de janeiro -26.000 de fevereiro = -46.000.
                                No mês de março é o resultado de fevereiro (-46.000) -62.000 = -108.000
                                Como no resto do ano não teve mais lançamentos, até dezembro o saldo final fica -108.000 em todos meses. No exemplo não coloquei abril, maio etc mas ficaria -108.000 tb. Correta a forma de calcular?

                                Verifica se é isso por favor, daí dá para partir para a solução.

                                Quanto a não exibir as linhas com zero, fica mais simples depois de fazer a parte acima, pois se houver saldo inicial diferente de zero em dez/2009, o restante do ano de 2010 sempre vai ser diferente de zero, por ser acumulado… Então nem vai ser preciso mais fazer essa condição.

                                #94529
                                MARCIO_LOK
                                Participante

                                  Amigo, seria isso mesmo….

                                  So que o valor total no final, precisa continuar aparecendo… porque na verdade… ele é a soma da conta…. em todo o periodo…
                                  ou seja…….
                                  conta janeiro fevereiro……. total
                                  0000000345 4 5 9

                                  Como ta hoje… do jeito que esta hoje… outra coisa…..

                                  por exemplo… eu tenho… lancamento ate maio de 2010, por exemplo…
                                  junho….julho…etc teria que aparecer zerado… como esta aparecendo no script feito ate agora…

                                  sobre o valor aterior, tabela saldo… é exatamente, da forma que vc mostrou…. ele tem que vir tirando mes a mes…. exatamente ….
                                  nos exemplos que vc mostrou…

                                Visualizando 15 posts - 16 até 30 (de 59 do total)
                                • Você deve fazer login para responder a este tópico.