Array
(
)

Questão sobre SQL

Jmarcel
   - 19 jul 2011


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 ?

Emerson
   - 19 jul 2011

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

0
|
0