Select para pegar a maior data do dia anterior !
Olá amigos do fórum!!
Bem minha gente , estou com uma dúvida aqui que talvez para os senhores, seja uma coisa simples:
Tenho uma tabela chamada "Comissoes", com a seguinte estrutura e registros:
Id | Data | CodVendedor | Historico | ValorLiq | Saldo
1 | 16.12.2010 | 1 | MARCOS PEREIRA RODRIGUES | 10,00 | 10,00
1 | 16.12.2010 | 1 | DEBORA REGINA DA SILVA | 5,00 | 15,00
1 | 16.12.2010 | 1 | TRANSPORTE E LOGISTICA T G P LTDA | 20,00 | 35,00
1 | 16.12.2010 | 1 | ADRIANO LIMA | 2,00 | 37,00
1 | 17.12.2010 | 1 | RETIRADA EM DINHEIRO COMISSÃO | 37,00 | 0,00
1 | 17.12.2010 | 1 | RETIFICADORA BRASIL LTDA | 5,80 | 5,80
1 | 20.12.2010 | 1 | ANDREIA SILVA | 12,50 | 18,30
1 | 20.12.2010 | 1 | RETIRADA EM DINHEIRO COMISSÃO | 18,30 | 0,00
O que eu preciso fazer é o seguinte, tenho que fazer um select que me retorne em 2 colunas (Saldo_Anterior e Saldo_Atual) a maior data do dia anterior do parametro Data_Inicial e maior data do último dia informado em Data_Final. Os parametros que estou passando são estes: :CodVendedor , :Data_Inicial e :Data_Final. No exemplo acima, se eu colocar Vendedor = 1, Data_Inicial = 16/12/2010 e Data_Final = 23/12/2010 ele teria que me trazer:
SALDO_ANTERIOR | SALDO_ATUAL
37,00 | 0,00
não sei se deu pra entender!
estou usando o Firebird 2.1.3
Por favor, quem pudesse me ajudar ficaria muito grato!!
Obrigado!
ah, antes que eu me esqueça, um feliz natal a todos e um próspero ano novo!
Bem minha gente , estou com uma dúvida aqui que talvez para os senhores, seja uma coisa simples:
Tenho uma tabela chamada "Comissoes", com a seguinte estrutura e registros:
Id | Data | CodVendedor | Historico | ValorLiq | Saldo
1 | 16.12.2010 | 1 | MARCOS PEREIRA RODRIGUES | 10,00 | 10,00
1 | 16.12.2010 | 1 | DEBORA REGINA DA SILVA | 5,00 | 15,00
1 | 16.12.2010 | 1 | TRANSPORTE E LOGISTICA T G P LTDA | 20,00 | 35,00
1 | 16.12.2010 | 1 | ADRIANO LIMA | 2,00 | 37,00
1 | 17.12.2010 | 1 | RETIRADA EM DINHEIRO COMISSÃO | 37,00 | 0,00
1 | 17.12.2010 | 1 | RETIFICADORA BRASIL LTDA | 5,80 | 5,80
1 | 20.12.2010 | 1 | ANDREIA SILVA | 12,50 | 18,30
1 | 20.12.2010 | 1 | RETIRADA EM DINHEIRO COMISSÃO | 18,30 | 0,00
O que eu preciso fazer é o seguinte, tenho que fazer um select que me retorne em 2 colunas (Saldo_Anterior e Saldo_Atual) a maior data do dia anterior do parametro Data_Inicial e maior data do último dia informado em Data_Final. Os parametros que estou passando são estes: :CodVendedor , :Data_Inicial e :Data_Final. No exemplo acima, se eu colocar Vendedor = 1, Data_Inicial = 16/12/2010 e Data_Final = 23/12/2010 ele teria que me trazer:
SALDO_ANTERIOR | SALDO_ATUAL
37,00 | 0,00
não sei se deu pra entender!
estou usando o Firebird 2.1.3
Por favor, quem pudesse me ajudar ficaria muito grato!!
Obrigado!
ah, antes que eu me esqueça, um feliz natal a todos e um próspero ano novo!
Itamar Monteiro
Curtidas 0
Respostas
Ricardo Araujo
23/12/2010
boa noite,
acho que esta solução ira ajuda vc,
fiz um exemplo e bateu certinho com que vc esta precisando
código da uma olhada.
SELECT c.valorliq, c.saldo FROM COMISSOES C
where c.codvendedor = '1'
and c.data between :datai and :dataf
and c.valorliq = (select max(c.valorliq) from comissoes c)
where c.codvendedor = '1'
and c.data between :datai and :dataf
and c.valorliq = (select max(c.valorliq) from comissoes c)
GOSTEI 0
Itamar Monteiro
23/12/2010
Olá Ricardo, tudo blz?
Obrigado pela dica vou testar, e te dou um retorno , obrigado!
Obrigado pela dica vou testar, e te dou um retorno , obrigado!
GOSTEI 0
Emerson Nascimento
23/12/2010
o exemplo que você passou está correto? o resultado deveria ser aquele mesmo?
outra coisa: todos os ID's têm o mesmo conteúdo?
outra coisa: todos os ID's têm o mesmo conteúdo?
GOSTEI 0
Itamar Monteiro
23/12/2010
Olá Emerson, tudo bem?
Sim, o resultado deve ser aquele mesmo, é o que pessoa lá... trabalha de uma forma diferente no diz respeito a saldo anterior, é um programinha de comissões, mas às avessas... rsrsrs
Sim os ID´s tem o mesmo conteúdo... são do tipo Integer.. (PK)
Sim, o resultado deve ser aquele mesmo, é o que pessoa lá... trabalha de uma forma diferente no diz respeito a saldo anterior, é um programinha de comissões, mas às avessas... rsrsrs
Sim os ID´s tem o mesmo conteúdo... são do tipo Integer.. (PK)
GOSTEI 0
Itamar Monteiro
23/12/2010
Pessoal, consegui fazer!!
Com a dica do amigo Ricardo, fiz algumas mudanças, batendo a cabeça, mas consegui....
O que eu precisava era que a partir de um período de datas informado, me retornasse o saldo da maior data, mas que fosse menor do que a data inicial (saldo anterior) e fosse igual a maior data do parametro datafinal. Meio confuso o negócio, ne?
Porque eu posso ter vários lançamentos para o mesmo dia, para o mesmo vendedor por isso é que tenho que pegar a maior data de "Data Final" e a maior data de "Data Inicial" -1 para eu saber , quanto do vendedor tinha antes da data informada em "Data Inicial". O código SQL que usei foi esse:
Com este código, ele me traz exatamente o que eu preciso. No meu caso, funciona 100%.
Obrigado pela ajuda!!
Com a dica do amigo Ricardo, fiz algumas mudanças, batendo a cabeça, mas consegui....
O que eu precisava era que a partir de um período de datas informado, me retornasse o saldo da maior data, mas que fosse menor do que a data inicial (saldo anterior) e fosse igual a maior data do parametro datafinal. Meio confuso o negócio, ne?
Porque eu posso ter vários lançamentos para o mesmo dia, para o mesmo vendedor por isso é que tenho que pegar a maior data de "Data Final" e a maior data de "Data Inicial" -1 para eu saber , quanto do vendedor tinha antes da data informada em "Data Inicial". O código SQL que usei foi esse:
SELECT SALDO AS SALDO_ANTERIOR, (SELECT SALDO AS SALDO_ATUAL FROM COMISSOES WHERE CODVENDEDOR = :VENDEDOR AND DATA BETWEEN (SELECT MAX(DATA) FROM COMISSOES WHERE CODVENDEDOR = :VENDEDOR AND DATA <= :DATAFINAL) AND :DATAFINAL ORDER BY ID DESC ROWS 1) FROM COMISSOES WHERE CODVENDEDOR = :SOCIO AND DATA BETWEEN (SELECT MAX(DATA) FROM SALDOS WHERE CODVENDEDOR = :VENDEDOR AND DATA < :DATA) AND :DATA -1 ORDER BY ID DESC ROWS 1
Com este código, ele me traz exatamente o que eu preciso. No meu caso, funciona 100%.
Obrigado pela ajuda!!
GOSTEI 0