GARANTIR DESCONTO

Fórum Varios registros em funcao #28131

22/03/2005

0

PessoALL, tentarei ser claro. Tenho a seguinte tabela:
TB_AAA
COD --- METRICA --- VL
1 80 1000
1 80 500
2 80 5000
1 78 2000
2 78 3000
2 78 2500

Preciso criar uma função que me retorne, para cada metrica e codigo, a soma de seus valores e depois faca a diferenca entre os valores da metrica 80 com a 78, que tenham o mesmo codigo.

exemplo:
COD 1: VL (1000+500)/2000
COD 2: VL (5000)/(5500)

Ou seja, preciso de uma função que leia todos os registros da tabela, faca a soma agrupando por codigo e metrica, e depois faca a diferençao entre as duas metricas.

Alguem poderia me ajudar?!?


Fvilela

Fvilela

Responder

Posts

22/03/2005

Motta

:(
não entendi ...


Responder

Gostei + 0

22/03/2005

Fvilela

perdao, tentarei ser um pouco mais claro ...

...
suponha que tenho uma tabela com os seguintes registros como mostrado abaixo:
COD --- METRICA --- VL
1 80 1000
1 80 500
2 80 5000
1 78 2000
2 78 3000
2 78 2500

Se fizermos uma query que faca a soma e o agrupamento desses dados, teremos o seguinte:
select cod, metrica, sum(vl) from tb_aaa
group by cod,metrica

COD METRICA VL
1 80 1500
2 80 5000
1 78 2000
2 78 5500

Apos eu ter isso, tenho que pegar os registros que tenham o mesmo codigo e dividir o valor daquele codigo com a metrica 80 pelo valor da metrica 78.

Pegar o registro 1 - 80 - 1500 e dividir pelo registro 1 - 78 - 2000
gerando assim o resultado 1500/2000

pegar o registro 2 - 80 - 5000 e dividir pelo registro 2 - 78 - 5500
gerando assim o resultado 5000/5500

entendeu ?? eu preciso do retorno desse valor, da divisao das metricas 80 por 78, que possuam o mesmo codigo.


Responder

Gostei + 0

22/03/2005

Motta

algo assim ....


function (pcod in number) return number is
 vl80 number;
 vl78 number
begin
  select vl
  into vl80
  from tabela
  where cod = pcod
  and metrica = 80;
  select vl
  into vl80
  from tabela
  where cod = pcod
  and metrica = 78;
  return (vl78/vl80);
end;




Responder

Gostei + 0

22/03/2005

Fvilela

Sim .. so com uma pequena observancia ... sao vaarios codigos, precisava de um jeito que comparasse o codigo mas nao passando como parametro.


Responder

Gostei + 0

22/03/2005

Motta

sim mas a relacao e de um codigo , nao ?

a function e recursiva ..

select codigo,razao(codigo)
from produto
where ....


onde razao seria a funcion

mas 80 e 78 sao fixos ?


Responder

Gostei + 0

23/03/2005

Fvilela

sim mas a relacao e de um codigo , nao ? a function e recursiva .. select codigo,razao(codigo) from produto where .... onde razao seria a funcion mas 80 e 78 sao fixos ?


Sim, sao. Realmente funcionou como esperava.

Obrigadao pela ajuda Motta, no que precisar tamos ai!!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar