[firebase-br] Select MAX do MAX
Danilo Gomes
danrgomes em gmail.com
Sex Fev 15 14:42:07 -03 2008
Ola Renato obrigado pela atenção mas via order by nao da pois eu preciso de
somente um registro ai . acabei achando uma solucao via procedure ...porem
via select sem chance ..
eis ai ..a ideia ..
CREATE PROCEDURE PEGA_MAIOR_VENCTO
RETURNS (
NUMERO INTEGER,
VENCIMENTO DATE,
PAGTO DATE,
VALOR_PAGO NUMERIC(15,2),
VALOR NUMERIC(15,2),
DIFRENCA NUMERIC(15,2),
CDCLIENTE INTEGER)
AS
DECLARE VARIABLE ppVENCTO DATE;
DECLARE VARIABLE ppCD_CLIENTE INTEGER;
DECLARE VARIABLE PNUMERO INTEGER;
DECLARE VARIABLE PVENCIMENTO DATE;
DECLARE VARIABLE PPAGTO DATE;
DECLARE VARIABLE PVALOR_PAGO NUMERIC(15,2);
DECLARE VARIABLE PVALOR NUMERIC(15,2);
DECLARE VARIABLE PDIFRENCA NUMERIC(15,2);
DECLARE VARIABLE PCDCLIENTE INTEGER;
begin
FOR
SELECT MAX(CA.VENCIMENTO) AS VENCTO,
CA.CD_CLIENTE
FROM T16_CONTAS_RECEBER CA
WHERE CA.PAGTO IS NOT NULL
GROUP BY 2
INTO
ppVENCTO,
ppCD_CLIENTE
DO
BEGIN
SELECT
T16.NUMERO,
T16.VENCIMENTO,
T16.PAGTO,
T16.VALOR,
T16.VALOR_PAGO,
(T16.VALOR - T16.VALOR_PAGO),
T16.CD_CLIENTE
FROM T16_CONTAS_RECEBER T16
WHERE T16.VENCIMENTO = :ppVENCTO AND T16.CD_CLIENTE = :ppCD_CLIENTE
INTO
PNUMERO,
PVENCIMENTO,
PPAGTO,
PVALOR,
PVALOR_PAGO,
PDIFRENCA,
PCDCLIENTE;
if ((pvalor - PVALOR_PAGO)>0) then
begin
NUMERO = pNUMERO;
VENCIMENTO = pVENCIMENTO;
PAGTO = pPAGTO;
VALOR = pVALOR;
VALOR_PAGO = pVALOR_PAGO;
DIFRENCA = pDIFRENCA;
CDCLIENTE = pCDCLIENTE;
SUSPEND;
end
END
end
2008/2/15, renato <centriscorps em gmail.com>:
>
> Que tal incluir no final da sua instrução sql a cláusula ORDER BY
> CA.VALOR_PAGO DESC?
>
> Renato
> ______________________________________________
> 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
>
Mais detalhes sobre a lista de discussão lista