none
DÚVIDA SQL SERVER RRS feed

  • Pergunta

  • Bom dia. 

    Eu tenho uma tabela contasareceber que tem um campo rsituacao (situacao do documento). Preciso que o select me mostre a soma do valor dos titulos em aberto (rsituacao = 2347) e pagos (rsituacao = 2346) de uma determinada data em colunas diferentes. 

    tentei fazer esse select, mas não funcionou:

    select 

    SUM(cr.valornamoeda1) as valorrecebido,
    SUM(cr1.valornamoeda1) as valoremaberto

    from 

    CONTAARECEBER_R cr
    JOIN CONTAARECEBER_R as cr1 on cr1.OID = cr.oid


    where cr.EMISSAO = '20060214'
    and cr.RSITUACAO = 2347
    and cr1.RSITUACAO = 2346

    group by cr.RSITUACAO,
    cr1.RSITUACAO

    acho que é justamente por causa do join.

    como fazer o select funcionar? 

    Obrigado.

    segunda-feira, 6 de maio de 2013 13:48

Respostas

  • Bom dia,

    César, experimente dessa forma:

    select 
        SUM(case when cr.RSITUACAO = 2346 then cr.valornamoeda1 else 0 end) as valorrecebido,
        SUM(case when cr.RSITUACAO = 2347 then cr.valornamoeda1 else 0 end) as valoremaberto
    from CONTAARECEBER_R cr
    where cr.EMISSAO = '20060214'
    

    Espero que ajude.


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

    • Marcado como Resposta César Felix segunda-feira, 6 de maio de 2013 14:42
    segunda-feira, 6 de maio de 2013 14:29

Todas as Respostas

  • Neste join existe o mesmo valor para as 2 tabelas no campo "OID" ? voce tambem esta agrupando por 2 campos mas não esta colocando eles no select, tente assim tb:

    select 
     cr.RSITUACAO,
     cr1.RSITUACAO,
    SUM(cr.valornamoeda1) as valorrecebido,
     SUM(cr1.valornamoeda1) as valoremaberto
     
    from 
     
    CONTAARECEBER_R cr
     JOIN CONTAARECEBER_R as cr1 on cr1.OID = cr.oid
     
    
    where cr.EMISSAO = '20060214'
     and cr.RSITUACAO = 2347
     and cr1.RSITUACAO = 2346
     
    group by cr.RSITUACAO,
     cr1.RSITUACAO


    Alexandre Matayosi Conde Mauricio.

    segunda-feira, 6 de maio de 2013 13:58
  • Bom dia,

    César, experimente dessa forma:

    select 
        SUM(case when cr.RSITUACAO = 2346 then cr.valornamoeda1 else 0 end) as valorrecebido,
        SUM(case when cr.RSITUACAO = 2347 then cr.valornamoeda1 else 0 end) as valoremaberto
    from CONTAARECEBER_R cr
    where cr.EMISSAO = '20060214'
    

    Espero que ajude.


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

    • Marcado como Resposta César Felix segunda-feira, 6 de maio de 2013 14:42
    segunda-feira, 6 de maio de 2013 14:29