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

Jmarcel

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
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar