SELECT COM OPERAÇÃO ARITMÉTICA POR PARAMETRO
Boa tarde.
Preciso de um select que faça contas aritméticas de acordo com os parâmetros estabelecidos.
Segue tabela com meu exemplo:
Código | Valor | Atributo
V001 | 500 | +
V001 | 500 | N
D001 | 500 | +
D001 | 500 | N
D002 | 500 | -
Gostaria que meu select somasse a coluna valor, considerando parametros da coluna código e da coluna atributo.
Resultado esperado = soma os valores dos códigos V001 e D001, atributo "N", desconsiderar os com atributo "+", subtrair os com atributo "-"
grato.
Preciso de um select que faça contas aritméticas de acordo com os parâmetros estabelecidos.
Segue tabela com meu exemplo:
Código | Valor | Atributo
V001 | 500 | +
V001 | 500 | N
D001 | 500 | +
D001 | 500 | N
D002 | 500 | -
Gostaria que meu select somasse a coluna valor, considerando parametros da coluna código e da coluna atributo.
Resultado esperado = soma os valores dos códigos V001 e D001, atributo "N", desconsiderar os com atributo "+", subtrair os com atributo "-"
grato.
Tiago Costa
Curtidas 0
Respostas
Alec Candia
16/11/2016
Tiago, não consegui compreender exatamente. Vamos lá:
Resultado esperado = soma os valores dos códigos V001 e D001 com o atributo N?
Não seria somar os atributos +, subtrair os atributos - e desconsiderar os N?
Resultado esperado = soma os valores dos códigos V001 e D001 com o atributo N?
Não seria somar os atributos +, subtrair os atributos - e desconsiderar os N?
GOSTEI 0
Tiago Costa
16/11/2016
É isso mesmo, o que nao consigo é fazer a soma e a subtracao no mesmo select.
GOSTEI 0
Lourival Queiroz
16/11/2016
Um exemplo:
set serveroutput on size unlimited
declare
VlTab NUMBER:=0;
begin
for r in (select Codigo, Valor, decode(Sinal,''''N'''',''''-'''',Sinal) Sinal
from tab
where Codigo in (''''V001'''',''''D001'''')
order by Codigo)
loop
if (r.Sinal = ''''+'''') then
VlTab:=VlTab + r.Valor;
else
VlTab:=VlTab - r.Valor;
end if;
end loop;
DBMS_OUTPUT.put_line(''''Valor Total: ''''||to_char(VlTab));
end;
GOSTEI 0