Ir para conteúdo
ronimarcos.silva

Totalizando colunas - Débito/Crédito

Recommended Posts

Olá pessoal, preciso de uma ajuda de vocês. Não tenho muita experiência em SQL, creio que para vocês será fácil. Estou usando o banco de dados Oracle 12C.

Supondo que tenho em meu banco 3 colunas, uma de conta de Débito, onde nesta coluna vai o código da conta de débito, uma de conta de Crédito, onde nesta coluna vai o código da conta de Crédito e uma de valor, que é informado o valor de cada lançamento a débito ou a crédito.

Quando o lançamento for a débito, o valor da conta de crédito é igual a Zero (0) e inverso quando o lançamento for a débito, ou seja, se uma conta está preenchida é porque a outra não tem lançamento. Até aí tudo bém, posso totalizar o valor por cada conta de débito ou de crédito. Mas como faço se eu querer saber o total da conta de débito e o total da conta de crédito?

Veja abaixo um exemplo:

 

		Select E640LCT.CtaDeb, E640LCT.CtaCre, sum(E210MVP.VLRMOV) as total
                  from E210Mvp, E644Les, E640Lct 
                 where 
                       E644Les.CodEmp = E640Lct.CodEmp and 
                       E644Les.NumLct = E640Lct.NumLct and 
                       E644Les.CodEmp = E210Mvp.CodEmp and 
                       E644Les.CodPro = E210Mvp.CodPro and 
                       E644Les.CodDer = E210Mvp.CodDer and 
                       E644Les.CodDep = E210Mvp.CodDep and 
                       E644Les.DatMov = E210Mvp.DatMov and 
                       E644Les.SeqMov = E210Mvp.SeqMov and 
                       E210Mvp.CodEmp = 100 and 
                       E210Mvp.CodFil = 3 and
                       E640LCT.OriLct = 'EST' and
                       E640LCT.DatLct between '01/07/2019' and '31/07/2019'
                       group by E640LCT.CtaDeb, E640LCT.CtaCre

 

cta_deb_cred.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se entendi

 

Select E640LCT.CtaDeb, E640LCT.CtaCre, (E640LCT.CtaDeb - E640LCT.CtaCre) saldo , sum(E210MVP.VLRMOV) as total
                  from E210Mvp, E644Les, E640Lct ...

 

Acho que tem de tratar o sinal conforme a natureza da conta , credora ou devedora

Compartilhar este post


Link para o post
Compartilhar em outros sites
13 horas atrás, Motta disse:

Não sei se entendi

 


Select E640LCT.CtaDeb, E640LCT.CtaCre, (E640LCT.CtaDeb - E640LCT.CtaCre) saldo , sum(E210MVP.VLRMOV) as total
                  from E210Mvp, E644Les, E640Lct ...

 

Acho que tem de tratar o sinal conforme a natureza da conta , credora ou devedora

Obrigado pela resposta.

 

As colunas CtaDeb e CtaCre, não são introduzidos valores monetários e sim o código da conta reduzida de débito e de crédito, os

valores são somente na coluna VlrMov.

Não sei se entendeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na conta de crédito e débito, vem o código da conta no plano de contas, tipo: água, luz, telefone, Receitas com vendas, etc.

Para cada conta dessas, eu tenho o valor em R$ referente a essa movimentação na coluna total.

As duas contas compartilham o campo total como campo de seus valores em reais. Esses valores não veem com valor negativo para conta de débito, tipo, com o sinal de menos na frente (-). Eles vem todos juntos, não tem um campo/flag que informa se a conta é de débito ou crédito, somente pelo próprio campo.

Estou tentando uma forma de totalizar os valores de débito e/ou valores de crédito, pois da forma como foi arquitetado ficou muito ruim para de descobrir, ao menos no meu pensamento.

Anexei uma imagem para explicar melhor, desde já agradeço.

 

ex_cta_deb_cred.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria isto ?
 

                  Select E640LCT.CtaDeb CtaDeb,
                         ' '            CtaCre,
                         sum(-1*E210MVP.VLRMOV) as total
                  from E210Mvp, E644Les, E640Lct
                 where
                       E644Les.CodEmp = E640Lct.CodEmp and
                       E644Les.NumLct = E640Lct.NumLct and
                       E644Les.CodEmp = E210Mvp.CodEmp and
                       E644Les.CodPro = E210Mvp.CodPro and
                       E644Les.CodDer = E210Mvp.CodDer and
                       E644Les.CodDep = E210Mvp.CodDep and
                       E644Les.DatMov = E210Mvp.DatMov and
                       E644Les.SeqMov = E210Mvp.SeqMov and
                       E210Mvp.CodEmp = 100 and
                       E210Mvp.CodFil = 3 and
                       E640LCT.OriLct = 'EST' and
                       E640LCT.DatLct between '01/07/2019' and '31/07/2019'
                       group by E640LCT.CtaDeb
                union all       
                Select   '' CtaDeb,
                         E640LCT.CtaCre CtaCre,
                         sum(E210MVP.VLRMOV) as total
                  from E210Mvp, E644Les, E640Lct
                 where
                       E644Les.CodEmp = E640Lct.CodEmp and
                       E644Les.NumLct = E640Lct.NumLct and
                       E644Les.CodEmp = E210Mvp.CodEmp and
                       E644Les.CodPro = E210Mvp.CodPro and
                       E644Les.CodDer = E210Mvp.CodDer and
                       E644Les.CodDep = E210Mvp.CodDep and
                       E644Les.DatMov = E210Mvp.DatMov and
                       E644Les.SeqMov = E210Mvp.SeqMov and
                       E210Mvp.CodEmp = 100 and
                       E210Mvp.CodFil = 3 and
                       E640LCT.OriLct = 'EST' and
                       E640LCT.DatLct between '01/07/2019' and '31/07/2019'
                     group by E640LCT.CtaCre

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Felipe Guedes Coutinho
      Galera, venho contribuindo com diversas dúvidas, mas hoje quem está com uma dúvida sou eu.
       
      Cenário - Gerar Dados para Relatório de Faturamento.
      Objetivo - Obter os valores totais das tabelas de Compra, Venda e Despesa agrupados por mês através de SUM dentro do "periodo" passado pela tela de consulta do relatório.
      Problema - Não existe um relacionamento entre as tabelas e eu preciso obter os resultados por 1 (UM) único select pois a cada registro lido com os valores totalizados e agrupados por mês eu movimento para um array onde o resultado do array é movimentado para um Chart do Google que gera um gráfico.
       
      Insumos:
      Tabela compra

      RESULTADO SEPARADO DA TABELA COMPRA
      SELECT  sum(vlr_pago),
              CASE extract(MONTH from dt_registro_compra)
                  WHEN 1 THEN 'Janeiro'
                  WHEN 2 THEN 'Fevereiro'
                  WHEN 3 THEN 'Março'
                  WHEN 4 THEN 'Abril'
                  WHEN 5 THEN 'Maio'
                  WHEN 6 THEN 'Junho'
                  WHEN 7 THEN 'Julho'
                  WHEN 8 THEN 'Agosto'
                  WHEN 9 THEN 'Setembro'
                  WHEN 10 THEN 'Outubro'
                  WHEN 11 THEN 'Novembro'
                  WHEN 12 THEN 'Dezembro'
              END AS mes
              FROM db_pescado_gelo.sqltb_compra
              WHERE dt_registro_compra between '2019-01-01' and '2019-12-31'
      group by mes
      order by dt_registro_compra asc
       
      RESULTADO:

       
      Tabela Venda

      RESULTADO SEPARADO DA TABELA VENDA
      SELECT  sum(vlr_vale),
              CASE extract(MONTH from dt_registro_venda)
                  WHEN 1 THEN 'Janeiro'
                  WHEN 2 THEN 'Fevereiro'
                  WHEN 3 THEN 'Março'
                  WHEN 4 THEN 'Abril'
                  WHEN 5 THEN 'Maio'
                  WHEN 6 THEN 'Junho'
                  WHEN 7 THEN 'Julho'
                  WHEN 8 THEN 'Agosto'
                  WHEN 9 THEN 'Setembro'
                  WHEN 10 THEN 'Outubro'
                  WHEN 11 THEN 'Novembro'
                  WHEN 12 THEN 'Dezembro'
              END AS mes
              FROM db_pescado_gelo.sqltb_venda
              WHERE dt_registro_venda between '2019-01-01' and '2019-12-31' 
      group by mes
      order by dt_registro_venda asc
       
      RESULTADO:

       
      Tabela Despesa

      Sei que devo colocar dt_pagamento is not null
      RESULTADO SEPARADO DA TABELA DESPESA
      SELECT  sum(vlr_pago),
              CASE extract(MONTH from dt_pagamento)
                  WHEN 1 THEN 'Janeiro'
                  WHEN 2 THEN 'Fevereiro'
                  WHEN 3 THEN 'Março'
                  WHEN 4 THEN 'Abril'
                  WHEN 5 THEN 'Maio'
                  WHEN 6 THEN 'Junho'
                  WHEN 7 THEN 'Julho'
                  WHEN 8 THEN 'Agosto'
                  WHEN 9 THEN 'Setembro'
                  WHEN 10 THEN 'Outubro'
                  WHEN 11 THEN 'Novembro'
                  WHEN 12 THEN 'Dezembro'
              END AS mes
              FROM db_pescado_gelo.sqltb_despesa
              WHERE dt_pagamento between '2019-01-01' and '2019-12-31'
                AND dt_pagamento is not null
      group by mes
      order by dt_pagamento asc
       
      RESULTADO:

       
       
      O resultado que eu gostaria é algo parecido com isso:
       
      TABELA DE VENDA TABELA DE COMPRA TABELA DE DESPESA - - R$ 31.272,55 Julho - - Agosto R$ 3.796,53 R$ 20.687,20 Agosto R$ 3.796,53 Agosto  
      Esse resultado eu "preciso" que seja através do retorno do um único SELECT, se alguém puder me ajudar, ficarei muito agradecido.
       
      Se puderem dar uma forã agradeço @Motta ; @Omar~ ; @Maujor ; @gabrielms 
       
      Att.
      Felipe Coutinho
    • Por Ygor Guedes
      Boa tarde meu pessoal. Preciso da ajuda de vocês em uma consulta baseada em Inner Join + Group By. Irei deixar as tabelas e a consulta que eu tenho, para melhor visualização:
       
      Consulta: 
      SELECT tab_garagens.onibus_ponto, tab_garagens.onibus_prefixo, data FROM pontos INNER JOIN tab_garagens ON pontos.onibus_ponto = tab_garagens.onibus_ponto Tabela pontos:
      | onibus_ponto |                data                |
      |           10           |  2019-06-03 12:00:00 |
      |           10           |  2019-06-03 12:10:00 |
      |           44           |  2019-06-03 12:00:00 |
       
      Tabela tab_garagens:
      | onibus_ponto |  onibus_prefixo  |
      |           10           |      DE700            |
      |           44           |      GL030            |
       
      A minha consulta está trazendo a informação mais antiga da data; o que eu preciso é tipo um ORDER BY com data mais recente, onde eu pego a data mais atual do registro agrupado na coluna 'onibus_ponto'.
       
      Eu gostaria que saísse assim: 
       
      | onibus_ponto |  onibus_prefixo |             data                  |
      |        10              |       DE700          | 2019-06-03 12:10:00 |
      |        44              |       GL030          | 2019-06-03 12:00:00 |
       
      Se puderem me ajudar, fico agradecido
    • Por brunoogm
      Pessoal tenho uma tabela no php cujo resultado do select vindo do bd vem no seguinte formato:
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Bacon Cheddar                          1          60.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Chicken Club Sandwich            1          45.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Philly Cheese Steak                   1          50.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Smoke House                             1          55.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Stream Miller                              1          35.00
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      E eu gostaria de fazer um select para que nao repita os dados iguais e que a tabela viesse assim:
       
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                                                                                                                                                      Bacon Cheddar                          1           60.00
                                                                                                                                                      Chicken Club Sandwich           1            45.00
      26    46        15/05/2019 13:57:25         Dinheiro                  Pendente                           Philly Cheese Steak                   1            50.00
                                                                                                                                                      Smoke House                             1            55.00
                                                                                                                                                      Stream Miller                              1            35.00
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      Alguem pode me ajudar, qual seria a melhor forma de fazer ?

      Essa tabela é gerada com um while no php entao se alguem saber uma outra maneira de montar isso aceito dicas.
       
      php: 
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      echo "<tr role='row' class='odd'>";
                                                      echo "<td class='sorting_1'>" .$resultado['CodigoComanda']. "</td>";
                                                      echo "<td>" .$resultado['Nome']."</td>";
                                                      echo "<td>" .$resultado['Quantidade']."</td>";
                                                      echo "<td>" .$resultado['Preco']."</td>";
                                                      echo "<td>" .$resultado['Metodos']."</td>";
                                                      echo "<td>" .$resultado['DataPedido']."</td>";
                                                      echo "<td>" .$resultado['Situacao']."</td>";
      echo "</tr>";
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      vlw pessoal
       
    • Por brunoogm
      Pessoal tenho uma tabela no php cujo resultado do select vindo do bd vem no seguinte formato:
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Bacon Cheddar                          160.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Chicken Club Sandwich            145.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Philly Cheese Steak                   150.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Smoke House                             155.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Stream Miller                              135.00
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      E eu gostaria de fazer um select para que nao repita os dados iguais e que a tabela viesse assim:
       
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                 46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Bacon Cheddar                          160.00
                                                                                                                                                      Chicken Club Sandwich            145.00
                                                                                                                                                      Philly Cheese Steak                   150.00
       Smoke House                             155.00
      26       46        15/05/2019 13:57:25         Dinheiro                  Pendente                        Stream Miller                              135.00
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
    • Por Anderson Campos da Silva
      Olá,
       
      Estou com um problema, que para alguns pode ser simples, é o seguinte:
       
      Tenho 2 tabela relacionadas, MODELO e EQUIPAMENTO
       
      TABELA MODELO
      idModelo (INT) - chave primária  
      txModelo (VARCHAR)
       
      TABELA EQUIPAMENTO 
      idEquipamento (INT) - chave primária   
      patrimonio (VARCHAR)
      situacao (VARCHAR)
      idModelo (INT) - Chave estrangeira
       
      O campo situação pode ser preenchido apenas apenas com PRODUÇÃO OU ESTOQUE.
       
      Enfim, preciso de um SELECT que retorne as seguintes colunas txModelo, quantidade de equipamentos por modelo, quantidade de equipamentos com PRODUÇÃO, e quantidade de equipamentos com ESTOQUE, exemplo:
       
      txModelo | total | produção | estoque
      CISCO           7            4                  3
      HP                15          10                 5
      DELL            10           2                   8
       
      Desde já agradeço
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.