Ir para conteúdo

Arquivado

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

diegocrozare

resolvendo problema com select e case

Recommended Posts

ola estou tentando solucionar um problema

eu tenho duas tabelas

 

cad_funcionario

id nome departamento cargo

1 karla TI desenvolvimento

2 roberta RH cordenadora

3 lucas RH analista

4 joao fiscal analista

5 Carlos Ti DBA

 

cad_salario

id cargo salario

1 desenvolvimento 1000

2 cordenadora 5000

3 analista 3000

4 dba 4000

 

no problema esta pedindo para eu reajustar alguns salarios dependendo de seu cargo fiz isso por meio do case, porem depois pede para fazer um select que retorne nome, departamento, cargo, salario atual e salario reajustado, so que quando uso o select imprimi os campos repetidamente, no caso existem cargo e id em ambos, so queria que mostrace todos os campos da cad_funcionario e mostre na frente os campos salario e salario reajustado.

 

segue o codigo que eu fiz ate agora

 

select *,

case

when salario = 1000 then (salario*0.1) + salario

when salario = 5000 then (salario*0.15) + salario

when salario = 3000 then (salario*0.2) + salario

when salario = 4000 then(salario*0.15)+salario end reajustado

from cad_salario

inner join cad_funcionario

on cad_salario.cargo = cad_funcionario.cargo;

 

gostaria que mi ajudem para não haver ambiguidade na hora de eu mostrar o resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

No lugar do * liste os campos que vc quer qualificando

 

Tabela.coluna

Compartilhar este post


Link para o post
Compartilhar em outros sites

verdade motta ...realmente...troquei e deu certo...

 

select cad_funcionario.nome, cad_funcionario.departamento, cad_funcionario.cargo, cad_salario.salario,
case
when salario = 1000 then round((salario*0.1), 2) + salario
when salario = 5000 then round((salario*0.15), 2) + salario
when salario = 3000 then round((salario*0.20), 2) + salario
when salario = 4000 then round((salario*0.15), 2) + salario end reajustado
from cad_salario
inner join cad_funcionario
on cad_funcionario.id = cad_salario.id;

 

 

porem achei um pouco confuso na hora do case, na hora de eu fazer os cálculos tive que usar salario como parâmetro, queria ter colocado cargo, porque os aumentos si baseiam nos cargos, mas toda vez dava ambiguidade nos campos por ter nos dois...porem essa solução acima é valida.....

 

obrigado mota, si tiver algo para complementar em relação a essa ambiguidade eu agradeceria, si mesmo com campos iguais eu posso usar como parâmetro no case.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, é só seguir a dica do Motta toda vez que for relacionar o campo.

 

Ambiguidade é quando duas tabelas tem campos com mesmo nome, se tu "disser" a ela de qual tabela tu quer o campo cargo, vai funcionar.

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.