PROCEDURE FIREBIRD
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!
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
Curtidas 0
Respostas
Facc
05/02/2009
Select MAX(codlancamento) from Clientes where Debito > 0
Evite escrever em caixa alta, dá impressao de vc estar gritando
GOSTEI 0
Malaquias
05/02/2009
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!
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
Rodolpho123
05/02/2009
Malaquias,
Tente assim, mas acho que isso só funciona na versão 2.0+ do Fb, devido ao subselect:
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
Junior Miranda
05/02/2009
Select MAX(codlancamento) from Clientes where Debito > 0 Group By Cod_Cliente
Se entendi...
GOSTEI 0
Malaquias
05/02/2009
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.
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
Junior Miranda
05/02/2009
Na verdade me parece ser uma evolução no
Veja se é isto
Escrevi sem testar. Qualquer coisa dá um post.
[/code]
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
Malaquias
05/02/2009
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!
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