Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Soma do mesmo campo com condições diferentes


Duduh_Capixaba

Pergunta

Olá povo!

Tenho os seguintes dados em uma tabela:

CLIENTE | DOCUMENTO | VENCIMENTO | LIQUIDO

9 | D01 | 25/01/2010 | 15,00

9 | D02 | 04/02/2010 | 10,00

9 | D03 | 01/03/2010 | 25,00

9 | D04 | 05/05/2010 | 40,00

Tendo como data atual 26/03/2010, então, o cliente 9 possui:

documentos vencidos: 50,00

documentos a vencer: 40,00

Gostaria de uma SELECT onde eu obtivesse as duas somas em CAMPOS DIFERENTES, e apenas UM REGISTRO, assim:

CLIENTE | VENCIDO | VENCER

9 | 50,00 | 40,00

O mais próximo que cheguei foi:

SELECT SUM(LIQUIDO) AS VENCIDO
FROM CRDOCUME WHERE CLIENTE = 9 AND VENCIMENTO <  '03/26/2010'
UNION
SELECT SUM(LIQUIDO) AS VENCER
FROM CRDOCUME WHERE CLIENTE = 9 AND VENCIMENTO >= '03/26/2010'
Só que o resultado é retornado em UM CAMPO (VENCIDO) contendo DOIS REGISTROS, um com a soma dos documentos vencidos, outro com a soma dos documentos a vencer. Outra select bem próxima foi:
SELECT DISTINCT(CLIENTE),
CASE
  WHEN VENCIMENTO <  '03/26/2010' THEN (SELECT COALESCE(SUM(LIQUIDO), 0) FROM CRDOCUME WHERE VENCIMENTO <  '03/26/2010' AND CLIENTE = 9)
END AS VENCIDO,
CASE
  WHEN VENCIMENTO >= '03/26/2010' THEN (SELECT COALESCE(SUM(LIQUIDO), 0) FROM CRDOCUME WHERE VENCIMENTO >= '03/26/2010' AND CLIENTE = 9)
END AS VENCER
FROM CRDOCUME WHERE CLIENTE = 9

Este resultado me retorna OS DOIS CAMPOS, VENCIDO e VENCER, mas também traz DOIS REGISTROS.

Será que alguém consegue resolver este problema? Vlw vlw

Editado por Duduh_Capixaba
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bem, postando nesse tópico apenas para fins de informação para quem procurar algo

parecido. Não sei se ninguém respondeu por não saber como resolver ou se foi por

eu não ter sido claro o bastante. Peço desculpas por não ter voltado aqui antes para

postar a resposta, pois estava muito atarefado.

Bem, o que eu queria era mostrar um resultado com a soma de um campo com

diferentes condições WHERE. Então, se estou somando o campo LIQUIDO com

duas condições diferentes, ele deve aparecer no resultado duas vezes.

Tomando por base o mesmo exemplo que deixei acima, o SELECT ficaria assim:

SELECT CLIENTE,
(SELECT SUM(LIQUIDO) FROM CRDOCUME WHERE VENCIMENTO <  '03/26/2010' AND CLIENTE = 9) AS VENCIDO,
(SELECT SUM(LIQUIDO) FROM CRDOCUME WHERE VENCIMENTO >= '03/26/2010' AND CLIENTE = 9) AS VENCER
FROM CRDOCUME WHERE CLIENTE = 9 GROUP BY CLIENTE

E o resultado:

CLIENTE | VENCIDO | VENCER

9 | 50,00 | 40,00

Ou seja, um select dentro de outro select, mostrando o mesmo campo com resultados diferentes.

Qualquer dúvida podem me mandar uma MP.

Tópico resolvido, podem fechar!

Editado por Duduh_Capixaba
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...