[firebase-br] SELECT MAX(CAMPO) com Condição específica

Ronaldo Moreira ronamore em gmail.com
Qui Set 17 13:33:25 -03 2009


Tenta usar o subselect que o Zottis passou.  Na verdade não terá como
escapar de uma consulta separada.
Ajustando o subselect:
(SELECT MAX(CR2.DAT_PAGTO) FROM  CONTA_A_RECEBER CR2 WHERE AND CR2.COD_CLI =
CL.CODIGO AND CR2.COD_CONTR = C.CODIGO
AND CR2.STATUS = 0 )AS PGTO

2009/9/17 Giovani Rochê <giovaniroche em msn.com>

>
> Ronaldo rodou certinho só q demorou bem mais para a consulta ser realizada.
> Como tem mts registros ta bem pesada. Se tive algo do tipo:
> MAX(CR2.DAT_PAGTO WHERE CR.STATUS = 0) AS PGTO
>
> acho q seria + rápido pq ae iria diminiur o cruzamento de dados com menos 1
> tabela.
>
> > Date: Thu, 17 Sep 2009 09:02:53 -0300
> > From: ronamore em gmail.com
> > To: lista em firebase.com.br
> > Subject: Re: [firebase-br]    SELECT MAX(CAMPO) com Condição específica
> >
> > Não sei como fica a questao do Group by, mas tente...
> >
> > SELECT C.CODIGO,ATIVO ,C.COD_CLI, C.NUM_CONTR, COD_CAT,
> > COD_FUNC,C.OBSERVACAO,
> >  DATA, CANCELADO, DATA_CANCEL, INADIM, DATVENCCARENCIA, C.STATUS,
> >  VARLOR_PARCELA, DATA_VENCIM, CONT_BENE, COBRADOR, CL.NOME AS CLIENTE,
> > CT.DESCR AS CATEGORIA,
> >  MIN(CR.DAT_VENC) AS INICIO, MAX(CR.DAT_VENC) AS FIM, MAX(CR2.DAT_PAGTO)
> AS
> > PGTO
> >  FROM CONTRATO C,CLIENTE CL, CATEGORIA CT,  CONTA_A_RECEBER CR,
> > CONTA_A_RECEBER CR2
> >  WHERE C.COD_CLI = CL.CODIGO AND C.COD_CAT = CT.CODIGO
> >   AND CR.COD_CLI = CL.CODIGO AND CR.COD_CONTR = C.CODIGO
> >  AND CR2.COD_CLI = CL.CODIGO AND CR2.COD_CONTR = C.CODIGO
> > AND CR2.STATUS = 0
> >   AND CL.NOME LIKE '%'
> >  AND ATIVO = 'S'
> >  AND CANCELADO <> 'S'
> >  AND C.STATUS = 0
> >  GROUP BY C.CODIGO,ATIVO ,C.COD_CLI, C.NUM_CONTR, COD_CAT,
> > COD_FUNC,C.OBSERVACAO,
> >  DATA, CANCELADO, DATA_CANCEL, INADIM, DATVENCCARENCIA, C.STATUS,
> >  VARLOR_PARCELA, DATA_VENCIM, CONT_BENE, COBRADOR, CLIENTE,  CATEGORIA
> >  ORDER BY CL.NOME
> >
> >
> > 2009/9/17 Giovani Rochê <giovaniroche em msn.com>
> >
> > >
> > > Olha só o meu SELECT como é:
> > >  SELECT C.CODIGO,ATIVO ,C.COD_CLI, C.NUM_CONTR, COD_CAT,
> > > COD_FUNC,C.OBSERVACAO,
> > >  DATA, CANCELADO, DATA_CANCEL, INADIM, DATVENCCARENCIA, C.STATUS,
> > >  VARLOR_PARCELA, DATA_VENCIM, CONT_BENE, COBRADOR, CL.NOME AS CLIENTE,
> > > CT.DESCR AS CATEGORIA,
> > >  MIN(CR.DAT_VENC) AS INICIO, MAX(CR.DAT_VENC) AS FIM, MAX(CR.DAT_PAGTO)
> AS
> > > PGTO
> > >  FROM CONTRATO C,CLIENTE CL, CATEGORIA CT,  CONTA_A_RECEBER CR
> > >  WHERE C.COD_CLI = CL.CODIGO AND C.COD_CAT = CT.CODIGO
> > >  AND CR.COD_CLI = CL.CODIGO AND CR.COD_CONTR = C.CODIGO
> > >  AND CL.NOME LIKE '%'
> > >  AND ATIVO = 'S'
> > >  AND CANCELADO <> 'S'
> > >  AND C.STATUS = 0
> > >  GROUP BY C.CODIGO,ATIVO ,C.COD_CLI, C.NUM_CONTR, COD_CAT,
> > > COD_FUNC,C.OBSERVACAO,
> > >  DATA, CANCELADO, DATA_CANCEL, INADIM, DATVENCCARENCIA, C.STATUS,
> > >  VARLOR_PARCELA, DATA_VENCIM, CONT_BENE, COBRADOR, CLIENTE,  CATEGORIA
> > >  ORDER BY CL.NOME
> > >
> > > A questão aqui é o MAX(CR.DAT_PAGTO) AS PGTO .
> > > Eu quero  a maior data de pagamento da tabela CONTA_A_RECEBER quando o
> > > campo
> > > status desta mesma tabela for igual a 0.
> > >
> > > No caso o campo CR.STATUS nem aperece como uma cláusula pq não quero
> > > filtrá-lo.
> > >
> > > _________________________________________________________________
> > > Descubra todas as novidades do novo Internet Explorer 8
> > >
> > >
> http://brasil.microsoft.com.br/IE8/mergulhe/?utm_source=MSN%3BHotmail&utm_medium=Tagline&utm_campaign=IE8
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> >
> >
> >
> > --
> > Ronaldo Moreira
> >
> > "Existem somente 10 tipos de pessoas no mundo inteiro: Aquelas que
> entendem
> > binário e aquelas que não entendem."
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
> _________________________________________________________________
> Descubra todas as novidades do novo Internet Explorer 8
>
> http://brasil.microsoft.com.br/IE8/mergulhe/?utm_source=MSN%3BHotmail&utm_medium=Tagline&utm_campaign=IE8
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
Ronaldo Moreira

"Existem somente 10 tipos de pessoas no mundo inteiro: Aquelas que entendem
binário e aquelas que não entendem."



Mais detalhes sobre a lista de discussão lista