Questão sobre SQL
19/07/2011
0
Pessoal, tenho a seguinte tabela:
COD Saldo DtMov Nome .
9389 0 14/07/2011 JOAO DA SILVA
23938 74500 14/07/2011 VALMIR BUENO
23938 74219 30/06/2011 VALMIR BUENO
.
.
.
(total de 1023 clientes) --> 23 clientes repetidos, exceto pelo DtMov
Quero obter o seguinte:
COD Saldo DtMov Nome Meta .
9389 0 14/07/2011 JOAO DA SILVA (0+300) --> =()
23938 74 14/07/2011 VALMIR BUENO (74+300) --> =(saldo do dia 30/06 + 300)
.
.
.
(total de 1000 clientes)
Os dados estão todos em apenas 1 tabela.
Ou seja, tenho 23 clientes (repetidos), exceto pelo fato de possuírem saldo em 30/06/2011.
A regra é: quem tem saldo em 30/06/2011, a 'Meta' = 300 + saldo do dia 30/06/2011.
Quem não tem saldo em 30/06, a 'Meta' = 300.
Alguém sabe como resolver ?
Jmarcel
Curtir tópico
+ 0
Responder
Posts
19/07/2011
Emerson Nascimento
tente algo assim:
select cod, max(dtmov) dtmov, nome,
sum(case when dtmov > data_fechamento then saldo else 0.0 end) saldo,
300 + sum(case when dtmov = data_fechamento then saldo else 0 end) meta
from contacorrente
where dtmov >= data_fechamento
group by cod, nome
no caso:
select cod, max(dtmov) dtmov, nome,
sum(case when dtmov > '06/30/2011' then saldo else 0.0 end) saldo,
300 + sum(case when dtmov = '06/30/2011' then saldo else 0 end) meta
from contacorrente
where dtmov >= '06/30/2011'
group by cod, nome
select cod, max(dtmov) dtmov, nome,
sum(case when dtmov > data_fechamento then saldo else 0.0 end) saldo,
300 + sum(case when dtmov = data_fechamento then saldo else 0 end) meta
from contacorrente
where dtmov >= data_fechamento
group by cod, nome
no caso:
select cod, max(dtmov) dtmov, nome,
sum(case when dtmov > '06/30/2011' then saldo else 0.0 end) saldo,
300 + sum(case when dtmov = '06/30/2011' then saldo else 0 end) meta
from contacorrente
where dtmov >= '06/30/2011'
group by cod, nome
Responder
Clique aqui para fazer login e interagir na Comunidade :)