none
Movimentações financeiras RRS feed

  • Pergunta

  • Olá Pessoal.

    Preciso desenvolver uma query para o seguinte quadro:

    TABELA_1

    CPF, NOME

    TAELA_2

    CPF, DATA, VALOR, TIPO(D/C)

    Query que relacione as pessoas que tenham feito dentro de um determinado periodo, movimentações financeiras >= R$2000, agrupando os totais por pessoa, mais ou menos assim:

    QUERY RESULTADO 

    CPF, NOME, TOTAL DB, TOTAL CR

    Seria possível?

    Obgdo.

    terça-feira, 21 de junho de 2016 14:59

Respostas

  • Experimente mais ou menos dessa forma:

    select
        t1.CPF,
        t1.Nome,
        sum(case when t2.Tipo = 'D' then t2.Valor else 0 end) as TotalDB,
        sum(case when t2.Tipo = 'C' then t2.Valor else 0 end) as TotalCR
    from Tabela_1 as t1
    inner join Tabela_2 as t2
        on t2.CPF = t1.CPF
    where
        t2.Data between @DataIni and @DataFim
    group by
        t1.CPF,
        t1.Nome
    having 
        sum(case when t2.Tipo = 'D' then t2.Valor else 0 end) >= 2000 or
        sum(case when t2.Tipo = 'C' then t2.Valor else 0 end) >= 2000

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta Rafael Juca terça-feira, 21 de junho de 2016 18:39
    • Marcado como Resposta Thales F Quintas sexta-feira, 24 de junho de 2016 13:31
    terça-feira, 21 de junho de 2016 18:06

Todas as Respostas

  • Bom dia,

    Experimente dessa forma:

    select
        t1.CPF,
        t1.Nome,
        sum(case when t2.Tipo = 'D' then t2.Valor else 0 end) as TotalDB,
        sum(case when t2.Tipo = 'C' then t2.Valor else 0 end) as TotalCR
    from Tabela_1 as t1
    inner join Tabela_2 as t2
        on t2.CPF = t1.CPF
    group by
        t1.CPF,
        t1.Nome
    having 
        sum(t2.Valor) >= 2000

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br


    • Editado gapimex terça-feira, 21 de junho de 2016 15:08
    • Marcado como Resposta Thales F Quintas terça-feira, 21 de junho de 2016 16:49
    • Não Marcado como Resposta Thales F Quintas terça-feira, 21 de junho de 2016 18:22
    terça-feira, 21 de junho de 2016 15:08
  • Olá.

    O que você considera como movimentação financeira >= R$ 2.000?

    soma valores tipo C >= R$ 2.000

    soma valores tipo C + tipo D >= R$ 2.000

    soma valores tipo C + ABS(tipo D) >= R$ 2.000

    terça-feira, 21 de junho de 2016 16:50
  • Boa tarde Gapimex.

    São consideradas como movimentações financeiras o somatório tipo C e o somatório tipo D separadamente por CPF.

    OU seja, Um CPF pode ter feito várias movimentações a débito e a crédito em um determinado período. 

    Só me interessam as movimentações financeiras de um cpf caso somatórios de Débitos e/ou créditos sejam maiores que R$2000.

    Podem, portanto, haver somente créditos. 

    Podem haver somente débitos, mas somente interessam os casos em que o somatório de cada u tipo, seja >= R$2000.

    Caso não tenha entendido, pode perguntar novamente.

    Eu estava criando a query da seguinte forma:

    Select a.CPF, a.Nome, sum(b.VALOR) as Deb, sum(c.VALOR) as Cred 

    from TAB1 as a

    inner join TAB2 as b

    on sum(VALOR)>=2000 and data between :dtIni and :dtFim

    inner join TAB2 as c

    on sum(VALOR)>=2000 and data between :dtIni and :dtFim

    NÃO CHEGUEI a testar ok. Mas se houver alguma critica ou sugestão, agradeço.

    Ainda não testei a query que vc passou. Assim que fizer, passarei a resposta.

    Obgdo


    • Editado Renato Reis1 terça-feira, 21 de junho de 2016 17:57 Faltou critica do periodo
    terça-feira, 21 de junho de 2016 17:47
  • Gapimex,

    Nesta solução que vc me apresentou a clausula Having deveria considerar o  TotalDB e/ou o TotalCR.

    Da forma que está, creio que somente pegará movimentos com valor superior ou igual a R$2000.

    Na verdade a pessoa pode ter vários lançamentos a crédito que se superiores ou iguais a R$2000, NO PERIODO, serão selecionados.

    O mesmo é válido para vários lançamentos a Débito que se superiores ou iguais a R$2000, NO PERIODO, serão selecionados.

    Caso os lançamentos a débito ou a crédito, não sejam superiores ou iguais a R$2000, essa pessoa(CPF) não será relacionada.

    É importante, verificar o período tb.

    Obgdo.

    terça-feira, 21 de junho de 2016 17:54
  • Experimente mais ou menos dessa forma:

    select
        t1.CPF,
        t1.Nome,
        sum(case when t2.Tipo = 'D' then t2.Valor else 0 end) as TotalDB,
        sum(case when t2.Tipo = 'C' then t2.Valor else 0 end) as TotalCR
    from Tabela_1 as t1
    inner join Tabela_2 as t2
        on t2.CPF = t1.CPF
    where
        t2.Data between @DataIni and @DataFim
    group by
        t1.CPF,
        t1.Nome
    having 
        sum(case when t2.Tipo = 'D' then t2.Valor else 0 end) >= 2000 or
        sum(case when t2.Tipo = 'C' then t2.Valor else 0 end) >= 2000

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    • Sugerido como Resposta Rafael Juca terça-feira, 21 de junho de 2016 18:39
    • Marcado como Resposta Thales F Quintas sexta-feira, 24 de junho de 2016 13:31
    terça-feira, 21 de junho de 2016 18:06
  • Bom dia,

    Por falta de retorno, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma nova thread.

    Atenciosamente


    Thales F Quintas

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    TechNet Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 24 de junho de 2016 13:31
  • Boa tarde Thales.

    Entendo que talvez tenha demorado um pouco para responder sobre a ajuda, mas houve um final de semana nesse tempo de 7 dias e outros problemas mereceram mais atenção. Desculpe por isso.

    Vou fazer a abertura de nova thread, então.

    Obgdo a todos.

    terça-feira, 28 de junho de 2016 19:02
  • Boa tarde Renato Reis1,

    Obrigado pela compreensão, esperamos lhe ajudar de forma mais efetiva na nova thread.

    Abraço.


    Thales F Quintas

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    TechNet Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 28 de junho de 2016 19:03