Fórum PROCEDURE FIREBIRD #60460

05/02/2009

0

BOA NOITE A TODOS!

ESTOU COM UM PROBLEMINHA AQUI E NAO ESTOU CONSEGUINDO RESOLVER ESPERO QUE VOCES ME AJUDEM.

BANCO DE DADOS: FIREBIRD 1.5

TENHO UMA TABELA CHAMADA TBL_LANC_CLIENTES QUE CONTEM OS DADOS DO LANCAMENTO DE CADA CLIENTE.

TBL_LANC_CLIENTE
CODIGO
COD_CLIENTE
DEBITO
ETC...

NECESSITO SELECIONAR O ULTIMO LANCAMENTO DE CADA CLIENTE, QUE O DEBITO SEJA MAIOR QUE ZERO. EU IDENTIFICO O ULTIMO LANCAMENTO PELO CODIGO DO LANCAMENTO.

OBRIGADO!


Malaquias

Malaquias

Responder

Posts

06/02/2009

Facc

Select MAX(codlancamento) from Clientes where Debito > 0





Evite escrever em caixa alta, dá impressao de vc estar gritando


Responder

Gostei + 0

06/02/2009

Malaquias

Bom dia Facc!

O problema se eu fizer assim ele vai selecionar somentos os lancamentos com debito. A minha intencao é selecionar somente o ultimo lancamento de cada cliente, mas so selecionar se contiver debito senao nao seleciona.

Obrigado!


Responder

Gostei + 0

06/02/2009

Rodolpho123

Malaquias,

Tente assim, mas acho que isso só funciona na versão 2.0+ do Fb, devido ao subselect:
select c1.cod_cliente
from clientes c1 
where codlancamento = (Select  MAX(c2.codlancamento) 
                                    from Clientes c2
                                    where c2.Debito > 0
                                       and c2.cod_cliente = c1.cod_cliente)




Responder

Gostei + 0

06/02/2009

Junior Miranda

Select MAX(codlancamento) from Clientes where Debito > 0
Group By Cod_Cliente


Se entendi...


Responder

Gostei + 0

06/02/2009

Malaquias

Acho que não expliquei direito desculpa.

Tenho as seguintes tabelas:

TBL_LANCAMENTOS
CODIGO
COD_CLIENTE
COD_LINHA
DEBITO

TBL_CLIENTES
CODIGO
NOME

TBL_LINHAS
CODIGO
NOME

Necessito selecionar da tabela de lancamentos o ultimo lancamento de cada cliente (mas somente o que tiver o campo debito maior que zero)
e exibir COD_CLIENTE, CLIENTE, LINHA, DEBITO.

Obrigado! e desculpa nao ter me expressado direito.


Responder

Gostei + 0

06/02/2009

Junior Miranda

Na verdade me parece ser uma evolução no
Select MAX(codlancamento) from Clientes where Debito > 0 
Group By Cod_Cliente


Veja se é isto
Select MAX(Q.codlancamento), Q1.Nome, Q2.Nome, Q.Debito from Clientes Q 
Left Join TBL_CLIENTES Q1 On Q.COD_CLIENTE = Q1.CODIGO 
Left Join TBL_LINHA Q2 On Q.COD_LINHA = Q2.CODIGO
where 
    Q.Debito > 0 
Group By 2,3,4 


Escrevi sem testar. Qualquer coisa dá um post.
[/code]


Responder

Gostei + 0

06/02/2009

Malaquias

Obrigado pessoal!

Atraves da ideia de voces consegui a solucao...

SQL = ´SELECT LANC.COD_CLIENTE, CLI.CLIENTE, LINHA.LINHA, LANC.DEBITO´
SQL = SQL & ´ FROM TBL_CAD_CLIENTES CLI´
SQL = SQL & ´ LEFT JOIN TBL_LANC_CLIENTE LANC on (LANC.COD_CLIENTE = CLI.CODIGO)´
SQL = SQL & ´ LEFT JOIN TBL_CAD_LINHAS LINHA on (LINHA.CODIGO = LANC.COD_LINHA)´
SQL = SQL & ´ WHERE LANC.CODIGO = (SELECT MAX(LANC2.CODIGO)´
SQL = SQL & ´ FROM TBL_LANC_CLIENTE LANC2 WHERE LANC2.COD_CLIENTE = CLI.CODIGO) AND LANC.DEBITO > 0´

Obrigado!

Abraço!


Responder

Gostei + 0

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

Aceitar