Fórum PROCEDURE FIREBIRD #60460
05/02/2009
0
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
Curtir tópico
+ 0Posts
06/02/2009
Facc
Select MAX(codlancamento) from Clientes where Debito > 0
Evite escrever em caixa alta, dá impressao de vc estar gritando
Gostei + 0
06/02/2009
Malaquias
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!
Gostei + 0
06/02/2009
Rodolpho123
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)
Gostei + 0
06/02/2009
Junior Miranda
Select MAX(codlancamento) from Clientes where Debito > 0 Group By Cod_Cliente
Se entendi...
Gostei + 0
06/02/2009
Malaquias
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.
Gostei + 0
06/02/2009
Junior Miranda
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]
Gostei + 0
06/02/2009
Malaquias
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!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)