retorno o ultimo valor de custo
Ola pessoal eu tenho uma tabela de custo de produto abaixo:
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:
Alguem pode me ajudar
Desde ja agradeço
Fabio
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
Curtidas 0
Respostas
Emerson Nascimento
15/03/2007
usando seu exemplo, e se a data digitada fosse 15/[b:2a55b35b60]02[/b:2a55b35b60]/2007, qual seria o valor retornado?
GOSTEI 0
Emerson Nascimento
15/03/2007
tente assim:
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
Fabiotb
15/03/2007
deu esse erro
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
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
Emerson Nascimento
15/03/2007
[i:9390435126]:data[/i:9390435126] deve ser uma data válida, [b:9390435126]passada por parâmetro[/b:9390435126] (não dá pra executar direto, mas funciona numa stored procedure ou passado pelo Delphi, por exemplo).
[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 :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
Emerson Nascimento
15/03/2007
[size=18:42a19def1e]correção:[/size:42a19def1e]
: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).
para execução direta, tente assim:
: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
Fabiotb
15/03/2007
Deu certo.
Obrigado!!!
Abraços
Obrigado!!!
Abraços
GOSTEI 0