Amigos, tenha a seguinte tabela é preciso criar uma estrutura, Bloco, para reencher o campo Resultado, estou postando aqui para facilitar é só roda o sql
select ra,
Disciplina,
Media,
Carga_Hora,
Faltas,
case when (Media >= 7) and (trunc((Faltas / Carga_Hora * 100)) <= 25) then 'APROVADO'
when (Media between 5 and 6.9) and (trunc((Faltas / Carga_Hora * 100)) <= 25) then 'EXAME'
else 'REPROVADO' end Resultado
from aluno
order by ra;
dr_gori escreveu:Você quer rodar um UPDATE pra preencher esse campo com a regra do select ?
Quero criar um Bloco para preencher o campo resultado, estou em dúvida de como fazer isso.
Seria algo parecido com isso, mais teria que ser um bloco, tipo um procedimento no oracle, eu estou estudando, só conheço o sql server :
Amigo, se bem entendi a solução independe do banco de dados, por isso, se quiser fazer a coisa da forma correta como sugeri o "manual de boas práticas", veja o que diz a terceira regra normal de banco de dados:
"Uma tabela está na Terceira Forma Normal 3FN se ela estiver na 2FN e se nenhuma coluna não-chave depender de outra coluna não-chave. Na terceira forma normal temos de eliminar aqueles campos que podem ser obtidos pela equação de outros campos da mesma tabela."
Estou colocando essa citação, porque caso não a conheça pode trazer luz a sua questão.
Entendendo essa estrutra da modelagem de dados, a solução depende da sua necessidade. Como podemos perceber, trata-se do resultado de aprovação ou não de um aluno dependendo da media e numero de faltas. Portanto defina o período, se é bimestral, trimestral, semestral ou anual.
Com a tabela populada, imagine uma grande quantidade de registros. Logo, você poderia utilizar um cursor com uma laço para percorrer o dataset, efetuando o calculo no SELECT, da mesma forma como você postou acima, atualizando a coluna da tabela, pelas chaves, com o valor do resultado. Ainda se quiser, pode criar uma FUNCTION com a mesma estrutura do cursor e "schedular" para executar nos períodos necessários.