Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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!!

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.