Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

raphaell.info

Somar resultados com diversas condições

Recommended Posts

Olá pessoal, estou numa briga feia com o MySql para chegar a uma soma, até agora não obtive nenhum sucesso, alguém pode me dar uma luz?

 

Minha Tabela:

CREATE TABLE `tbc_emprestimos` (
 `num_cliente` int(7) unsigned DEFAULT NULL,
 `num_contrato_credito` int(12) unsigned DEFAULT NULL,
 `val_parcela` int(17) unsigned DEFAULT NULL,
 `num_parcela` int(3) unsigned DEFAULT NULL,
 `data_vencimento` date DEFAULT NULL,
 `data_pagto_parcela` date DEFAULT NULL,
 `val_pagto_parcela` int(17) unsigned DEFAULT NULL,
 `pgt` int(1) unsigned DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

 

Tenho que apresentar uma soma de val_parcela para cada num_cliente onde:

Data_vencimento <= 2012-12-12(exemplo)

pgt = 1 e 3 ( 1 = a vencer ou devendo - 3 = pagou parte)

 

caso em pgt seja 3 vou ter que subtrair val_pagto_parcela de val_parcela o que sobrar somar ao pgt 1 deste mesmo num_cliente

 

alguém sugere algo?

Estou montando no MySql para posteriormente passar para PHP.

 

Att,

Raphael Lima

Compartilhar este post


Link para o post
Compartilhar em outros sites

Case, creio que resolva, algo assim :

 

select num_cliente,
      sum(case when pgt = 1 then val_parcela
               when pgt = 3 then val_pagto_parcela
               else 0 end) pago 
from tbc_emprestimos
group by num_cliente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Case, creio que resolva, algo assim :

 

select num_cliente,
      sum(case when pgt = 1 then val_parcela
               when pgt = 3 then val_pagto_parcela
               else 0 end) pago 
from tbc_emprestimos
group by num_cliente

Grato pela atenção Motta,

 

Já resolveu a maior parte, agora vou tentar por a verificação com a data_vencimento, pois ele esta pegando as que ainda vão vencer em 2013 por exemplo. :clap:/> :clap:/> :clap:/> :clap:/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não resolve :

... Data_vencimento <= DATE() ...

?!

 

 

Super Grato Motta, agora esta 100%, onde esta a data digitada vai entrar uma variável.

select num_cliente,
      sum(case when pgt = 1 then val_parcela
               when pgt = 3 then (val_parcela - val_pagto_parcela)
               else 0 end) pago
from tbc_emprestimos WHERE data_vencimento <= '2012-12-30'
group by num_cliente

 

Obs. Estudo MySql a menos de 3 meses por isto estas duvidas "básicas" :blush:

Compartilhar este post


Link para o post
Compartilhar em outros sites

select num_cliente,
      sum(case when pgt = 1 then val_parcela
               when pgt = 3 then val_pagto_parcela
               else 0 end) pago 
from tbc_emprestimos
group by num_cliente

Estou de volta com mais uma dúvida "básica":

 

Em relação ao ELSE 0, quando não tenho 1 ou 3 no pgt significa que este num_cliente não possui mais nada para pagar(2), sendo que esta sendo imputado "0" e sendo apresentado no resultado, veja:

008567-34242

013838-58651

021598-0

039349-59065

068381-25449

069787-29977

176451-0

202436-59035

209040-79

225207-0

247405-50596

279099-0

286753-235

288241-29532

297801-0

298891-21114

312169-0

337749-8089

 

Onde aparece "0" o pgt é igual a 2, e este não deve ser apresentado. Já tentei diversas maneiras de não aparecer, alguém tem alguma dica?

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites
select num_cliente,
      sum(case when pgt = 1 then val_parcela
               when pgt = 3 then val_pagto_parcela
               else 0 end) pago 
from tbc_emprestimos
WHERE pgt IN (1,3)
group by num_cliente

Compartilhar este post


Link para o post
Compartilhar em outros sites

select num_cliente,
      sum(case when pgt = 1 then val_parcela
               when pgt = 3 then val_pagto_parcela
               else 0 end) pago 
from tbc_emprestimos
WHERE pgt IN (1,3)
group by num_cliente

Motta, falha minha esqueci de colocar que já estou utilizando WHERE:

$sql = mysql_query("select num_cliente,
      sum(case when pgt = 1 then val_parcela
               when pgt = 3 then val_parcela
               else 0 end) emprestimo
from tbc_emprestimos WHERE data_vencimento <= '".$vencimento."' AND num_cliente = ".$exibir["num_cliente"]."
group by num_cliente");

Compartilhar este post


Link para o post
Compartilhar em outros sites
$sql = mysql_query("select num_cliente,
      sum(case when pgt = 1 then val_parcela
               when pgt = 3 then val_parcela
               else 0 end) emprestimo
from tbc_emprestimos 
WHERE data_vencimento <= '".$vencimento."' AND num_cliente = ".$exibir["num_cliente"]."
and pgt IN (1,3)
group by num_cliente");

Compartilhar este post


Link para o post
Compartilhar em outros sites

$sql = mysql_query("select num_cliente,
      sum(case when pgt = 1 then val_parcela
               when pgt = 3 then val_parcela
               else 0 end) emprestimo
from tbc_emprestimos 
WHERE data_vencimento <= '".$vencimento."' AND num_cliente = ".$exibir["num_cliente"]."
and pgt IN (1,3)
group by num_cliente");

Que bom que você não esta em minha frente, pois iria ver a cara de "trouxa" que estou :wacko: , não havia me ligado que aceita vários AND.

 

Grato novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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