Dias atrás um colega meu de trabalho precisava realizar um UPDATE condicional, ou seja, atualizar o campo em função de outro campo. Ele logo disparou: "Dá pra usar CASE em UPDATE?".
Ficamos naquela, dá, não dá? Procuramos na net, fizemos um teste e vimos que era mesmo possível fazer isso. Confesso que nunca tinha usado isso, mas a instrução funciona que é uma beleza.
Pra mostrar como ficou a solução, vamos fazer um exemplo. Imagine que temos uma tabela de preços e precisamos ajustá-la da conforme abaixo
update tab_preco
set preco =
case
when preco <= 100 preco * 1.05
when preco > 100 and preco <= 500 then preco * 1.03 when preco > 500 then preco * 1.015
end
Como se vê, é muito simples e extremamente funcional. Poderia ter sido usado o valor de outro campo para a condição. Exemplo:
update tab_preco
set preco =
case grupo
when 'LIMPEZA' then preco * 1.05
when 'ALIMENTACAO' then preco * 1.1
when 'VESTUARIO' then preco * 1.05
else preco * 1.02
end
Até +
Ficamos naquela, dá, não dá? Procuramos na net, fizemos um teste e vimos que era mesmo possível fazer isso. Confesso que nunca tinha usado isso, mas a instrução funciona que é uma beleza.
Pra mostrar como ficou a solução, vamos fazer um exemplo. Imagine que temos uma tabela de preços e precisamos ajustá-la da conforme abaixo
- Produtos com preço até R$ 100 sofrem reajuste de 5%;
- Produtos com preço de R$ 101 a R$ 500 sofrem reajuste de 3%;
- Produtos com preço acima de R$ 500 sofrem reajusto de 1,5%;
update tab_preco
set preco =
case
when preco <= 100 preco * 1.05
when preco > 100 and preco <= 500 then preco * 1.03 when preco > 500 then preco * 1.015
end
Como se vê, é muito simples e extremamente funcional. Poderia ter sido usado o valor de outro campo para a condição. Exemplo:
update tab_preco
set preco =
case grupo
when 'LIMPEZA' then preco * 1.05
when 'ALIMENTACAO' then preco * 1.1
when 'VESTUARIO' then preco * 1.05
else preco * 1.02
end
Até +