[firebase-br] Max

Eduardo Bahiense eduardo em icontroller.com.br
Seg Dez 8 15:02:30 -03 2008


Não testei, mas deve funcionar !

Eduardo

SELECT
     CASE WHEN MAX1 > MAX2 THEN MAX1 ELSE MAX2 END AS MAXIMO
FROM
(
     (
         SELECT MAX(SE.DATAULTIMOFATURAMENTO) --DATAULTIMOFATURAMENTO
         FROM MANSAIDAEQUIPAMENTO SE
         INNER JOIN MANSAIDAEQUIPAMENTOITEM SEI ON ( 
SE.PK_SAIDAEQUIPAMENTO = SEI.FK_SAIDAEQUIPAMENTO )
         INNER JOIN FATCONTRATOSERVICOITEM CSI ON ( 
SEI.FK_CONTRATOSERVICOITEM = CSI.PK_CONTRATOSERVICOITEM )
         INNER JOIN FATCONTRATOSERVICO CS ON (CSI.FK_CONTRATOSERVICO = 
CS.PK_CONTRATOSERVICO)
         WHERE CS.PK_CONTRATOSERVICO =  6377
     ) AS MAX1,
     (
         SELECT MAX(SE.DATAULTIMOFATURAMENTO) --DATAULTIMOFATURAMENTO
         FROM MANSAIDAEQUIPAMENTO SE
         INNER JOIN MANSAIDAACESSORIOITEM AI ON ( SE.PK_SAIDAEQUIPAMENTO 
= AI.FK_SAIDAEQUIPAMENTO )
         INNER JOIN FATCONTRATOSERVICOITEM CSI ON ( 
AI.FK_CONTRATOSERVICOITEM = CSI.PK_CONTRATOSERVICOITEM )
         INNER JOIN FATCONTRATOSERVICO CS ON (CSI.FK_CONTRATOSERVICO = 
CS.PK_CONTRATOSERVICO)
         WHERE CS.PK_CONTRATOSERVICO = 6377
     ) AS MAX2
     FROM RDB$DATABASE
)


Nigro - Fábrica de Software escreveu:
 > Boa tarde.
 > Estou usando FB1.5.5 e preciso colocar Max em dois Select´s com 
Union, como segue.
 >
 > SELECT FIRST 1 MAX(SE.DATAULTIMOFATURAMENTO) --DATAULTIMOFATURAMENTO
 > FROM MANSAIDAEQUIPAMENTO SE
 > INNER JOIN MANSAIDAEQUIPAMENTOITEM SEI ON ( SE.PK_SAIDAEQUIPAMENTO = 
SEI.FK_SAIDAEQUIPAMENTO )
 > INNER JOIN FATCONTRATOSERVICOITEM CSI ON ( SEI.FK_CONTRATOSERVICOITEM 
= CSI.PK_CONTRATOSERVICOITEM )
 > INNER JOIN FATCONTRATOSERVICO CS ON (CSI.FK_CONTRATOSERVICO = 
CS.PK_CONTRATOSERVICO)
 > WHERE CS.PK_CONTRATOSERVICO =  6377
 > UNION
 > SELECT FIRST 1 MAX(SE.DATAULTIMOFATURAMENTO) --DATAULTIMOFATURAMENTO
 > FROM MANSAIDAEQUIPAMENTO SE
 > INNER JOIN MANSAIDAACESSORIOITEM AI ON ( SE.PK_SAIDAEQUIPAMENTO = 
AI.FK_SAIDAEQUIPAMENTO )
 > INNER JOIN FATCONTRATOSERVICOITEM CSI ON ( AI.FK_CONTRATOSERVICOITEM 
= CSI.PK_CONTRATOSERVICOITEM )
 > INNER JOIN FATCONTRATOSERVICO CS ON (CSI.FK_CONTRATOSERVICO = 
CS.PK_CONTRATOSERVICO)
 > WHERE CS.PK_CONTRATOSERVICO = 6377
 >
 > Ou seja, preciso de um Max que me retorne o maior dos dois Max acima, 
não tenho condições de mudar a versão do banco.
 >
 > att.
 > Nigro
 >
 > Fábrica de Software
 >
 > Brasil Informática
 >
 > ( Tel.: (+55 11) 2176-8899
 >
 > ( Fax: (+55 11) 2176-8888
 >
 > rnigro em brasil-info.com.br
 >
 > www.brasil-info.com.br
 >
 >
 >
 > P Antes de imprimir, pense em sua responsabilidade e compromisso com 
o meio ambiente.
 >
 >
 >
 > ALERTA: As informações contidas nesta mensagem são confidenciais, e 
destinadas ao uso exclusivo do destinatário. Caso esta correspondência 
tenha sido recebida por equívoco, notificamos que sua divulgação é 
proibida por lei, e solicitamos que o remetente seja comunicado, 
imediatamente, via e-mail.
 >
 > Obrigado.
 >
 > NOTICE:  This transmittal and/or attachments may be privileged or 
confidential information. If you are not the intended recipient, you are 
hereby notified that you have received this transmittal in error. Any 
review, dissemination, distribution or copying of this transmittal is 
strictly prohibited. If you have received this message in error, please 
notify the sender by return e-mail.
 > Thank you





Mais detalhes sobre a lista de discussão lista