Calcular em qual faixa se encontra um valor calculado

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
davidmeloboy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 54
Registrado em: Sex, 05 Set 2008 1:53 pm
Localização: Parobé - RS
Contato:
David.

Bom dia!
Como posso testar se um valor se encaixa em uma faixa específica?
Por exemplo:

Valor: 78,90 esta na faixa de 70 até 79,99 = faixa de 70, valor: 9,4 esta na faixa de 0 até 9,99 = faixa de 10, valor: 12,4 esta na faixa de 10 até 19,99 = faixa de 20, preciso testar em qual faixa se encontra o valor e retorna-lo. Isso dinâmico. Sempre calcular em qual faixa se encontra o valor total retornado.

Alguém tem alguma idéia?
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brow, apenas como exemplo, utilizando EMP e SALGRADE:

Selecionar tudo

SELECT sal.grade
  FROM emp, salgrade sal
 WHERE emp.salary BETWEEN sal.losal AND sal.hisal
Nota: Não sei se o nome das colunas é o mesmo, apenas como exemplo entre faixa.

qualquer coisa, manda pra gente.
davidmeloboy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 54
Registrado em: Sex, 05 Set 2008 1:53 pm
Localização: Parobé - RS
Contato:
David.

Acho que você não entendeu o que eu preciso.



A lógica é mais ou menos como a query abaixo, só que dinâmico, não fixo como está! E infinitamente. Dependendo do valor que retornar calculará em qual faixa se encontra aquele valor.

Selecionar tudo

SELECT CASE
         WHEN qry.valor BETWEEN 0 AND 9.99 THEN
          10
         WHEN qry.valor BETWEEN 10 AND 19.99 THEN
          20
         WHEN qry.valor BETWEEN 20 AND 29.99 THEN
          30
       END faixa
  FROM (SELECT 9.4 valor
          FROM dual) qry
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Entendi...

Dá uma olhada aqui no fórum, utilizando EXECUTE IMMEDIATE você consegue o que precisa.
davidmeloboy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 54
Registrado em: Sex, 05 Set 2008 1:53 pm
Localização: Parobé - RS
Contato:
David.

EXECUTE IMEDIATE? O que tem haver com o que eu preciso?
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

1) Cursor montado com execute immediate retorna valores dinamicos. Num precisa de valores dinamicos?
2) Populando essa subquery (qry.valor) com todos os valores como se fosse um temp, tb dá.
davidmeloboy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 54
Registrado em: Sex, 05 Set 2008 1:53 pm
Localização: Parobé - RS
Contato:
David.

Problema resolvido.
Abaixo o que eu precisava:

Selecionar tudo

SELECT (TRUNC(&valor / 10) + 1) * 10
  FROM dual
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 23 visitantes