Jump to content
Sign in to follow this  
Ericsson Berg

Como resolver -> realizar cálculo com string de um select?

Recommended Posts

Tenho um select que traz um resultado da seguinte forma:

Cod Descricao Valor formula

791 Faturamento 15000

792 Bônus 200

800 Resultado [791] + [792]

901 Despesas totais [902]+[903]

902 Despesa energia 350

903 Despesa água 650

1001 Percentual de despesa/ [901]/[800]

resultado

Dessa forma eu tenho um resultado das contas lançadas em cada linha e ao lado a fórmula que fará o calculo do total de determinadas linhas deste relatório.

Existe alguma forma de fazer este cálculo já no select ou outra forma??. -> Banco de dado Oracle

Obs.: Não tenho acesso a criar tabela temporárias

E se for no Mysql alguém tem ideia do que é possível?

Não queria recorrer ao php para resolver esta situação e sim já executar tudo pelo banco de dados.

Vlw!!

Share this post


Link to post
Share on other sites

Bom dia Ericsson,

Tem uma solução mas não sei se é a melhor.

teria que criar uma função:

create or replace
function fn_calculo (p_string in varchar2) return number is
x number;
begin
execute immediate('select '||p_string||' from dual')
into x;
return x;
end;
/
depois executar o select com a função:
Select fn_calculo (replace(replace(formula,'[',''),']',''))
from tabela
where formula is not null;
Desde que o campo formula seja sempre entre colchetes.
Deve existir alguma solução em regexpress mas eu não conheço.

Share this post


Link to post
Share on other sites

Boa tarde!

Vlw!!

Mas faltou eu explicar melhor um ponto, os números em colchete são referentes as linhas onde há valores ou não, assim eu teria que, acho:

1- após o select principal, realizar um outro select com cada linha que contém fórmula;

2- realizar mais um select e trazer o valor da linha correspondente ao número dentro do colchete;

3- substituir o número do colchete pelo resultado do select;

4- realizar a operação expressa na fórmula;

5- e depois inserir o resultado da operação na linha onde existe a fórmula na coluna valor.

Acredito que tudo isso ocorreria após a primeira consulta.

Isso pode ser meio complicado até de explicar... Queria algo para resolver assim, de preferência em mysql mesmo, pq este select pode vir a ficar em um webserver baseado em um programa de determinadas empresas e eu teria que ter o mínimo possível de interação no lado servidor, com a base de dados deles.

Mas o seu exemplo vai me ajudar sim em outro ponto, agradeço!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.