Fórum retorno o ultimo valor de custo #58014
15/03/2007
0
CD_PRODUTO, VALOR, MES, ANO
001 10,00 1 2006
001 9,00 8 2006
001 11,00 2 2007
cd_produto,mes e ano sao chave primaria
Quero q retorna o custo inferior ou igual a data q eu digitar
Exemplo eu digito a data 15/01/2007 e codigo do produto 1.
Quero q peque o valor 9,00 pq esta no mes 8 e ano 2006
Entenderam
o meu codigo é esse: mas ele nao traz no mes a ano que eu desejo:
select first 1 VL_CUSTO, mes,ano FROM CUSTO_PRODUTO WHERE cast ((mes||´/01´||´/´||ano) as date) <=:data and cd_produto =:prod
Alguem pode me ajudar
Desde ja agradeço
Fabio
Fabiotb
Curtir tópico
+ 0Posts
15/03/2007
Emerson Nascimento
Gostei + 0
15/03/2007
Emerson Nascimento
select first 1 VALOR, mes, ano FROM CUSTO_PRODUTO WHERE (ano + (mes / 100.00)) <= (extract(year from :data) + (extract(month from :data) / 100.00)) and cd_produto =:prod order by ano, mes desc
Gostei + 0
16/03/2007
Fabiotb
ISC ERROR CODE:335544569
ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -105
Specified EXTRACT part does not exist in input datatype
Statement: select first 1 VALOR, mes, ano
FROM
CUSTO_PRODUTO
WHERE
(ano + (mes / 100.00)) <= (extract(year from :data) + (extract(month from :data) / 100.00))
and cd_produto =:prod
order by ano, mes desc
Gostei + 0
16/03/2007
Emerson Nascimento
select first 1 VALOR, mes, ano FROM CUSTO_PRODUTO WHERE (ano + (mes / 100.00)) <= (extract(year from :data) + (extract(month from :data) / 100.00)) and cd_produto =:prod order by ano, mes desc
[b:9390435126]para execução direta, tente assim:[/b:9390435126]
select first 1 VALOR, mes, ano FROM CUSTO_PRODUTO WHERE (ano + (mes / 100.00)) <= (extract(year from cast(´15.01.2007´ as date)) + (extract(month from cast(´15.01.2007´ as date)) / 100.00)) and cd_produto =:prod order by ano, mes desc
Gostei + 0
16/03/2007
Emerson Nascimento
:data deve ser uma data válida, passada por parâmetro (não dá pra executar direto, mas funciona numa stored procedure ou passado pelo Delphi, por exemplo).
select first 1 VALOR, mes, ano FROM CUSTO_PRODUTO WHERE (ano + (mes / 100.00)) <= (extract(year from :data) + (extract(month from :data) / 100.00)) and cd_produto =:prod order by ano desc, mes desc
para execução direta, tente assim:
select first 1 VALOR, mes, ano FROM CUSTO_PRODUTO WHERE (ano + (mes / 100.00)) <= (extract(year from cast(´15.01.2007´ as date)) + (extract(month from cast(´15.01.2007´ as date)) / 100.00)) and cd_produto =:prod order by ano desc, mes desc
Gostei + 0
16/03/2007
Fabiotb
Obrigado!!!
Abraços
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)