[RESOLVIDO] Colocar um IF ELSE dentro do SQL

Amigos, na aplicação tenho uma tabela CATEGORIA conforme abaixo:
codigo int(3)
descricao varchar(20)
tipo int(1)
o campo tipo guarda numero de 1 a 9, sendo que de 1 a 7 representam Entrada e 8 e 9 representam Saida.

no filtro tenho os seguintes campos
tipomov select (‘E’,‘S’)
categoria duplo select com a tabela CATEGORIA

o problema é montar o SQL para o LOOKUP do duplo select.
algo como:
if ({tipomov} == ‘E’) {
select codigo, descricao from categoria where tipo < 8;
} elseif ({tipomov} == ‘S’) {
select codigo, descricao from categoria where tipo > 7;
} else {
select codigo, descricao from categoria;
}

Meus conhecimentos de SQL “não alcançaram” a solução.
Tentei usar: CASE WHEN mas não deu certo pois o campo tipomov, inicia “vazio” e {tipomov} retorna “nada”

Talvez a explicação não esteja muito boa, mas o objetivo é aprender como simular uma instrução IF ELSE dentro do SQL

Jorge,
Da forma como vc está querendo fazer, o teu modelo de dados vai ficar dependente do código.
Eu sugiro a criação de um campo a mais na tabela para dizer se o tipo é de entrada ou saída.
[] s

Jorge se entendi bem faça mais ou menos assim.

SELECT campos_desejado FROM tabela WHERE tipo between (CASE {tipomov} WHEN 'A' THEN '8' WHEN 'B' THEN '' ELSE 999 END) AND segunda_opcao

Acima é só um exemplo, use esse CASE WHEN para montar o valor que deseja buscar, de acordo com sua necessidade monte o WHERE desejado.
Use no campo tipomovto a opção de atualizar do duplo select via ajax.

Acho que isso dá.
Boa Sorte

Obrigado a todos pela ajuda.

Resolvido com a utilização do CASE … WHEN

Tinha tentado antes mas como o campo {tipomov} é do filtro e se não havia sido selecionado nada, retornava vazio dai dava erro na sintaxe do sql. Resolvi colocando como padrão o valor T (de todos) para retornar ‘T’ se não fosse escolhido nem ‘E’ nem ‘S’. Dentro de aspas simples.

Dai ficou assim:

SELECT sequencia, descricao FROM mei_categoria WHERE empresa = [v_codEmpresa] and (CASE '{tipocateg}' WHEN 'E' THEN tipo in (1,2,3,4,5,6,9) WHEN 'P' THEN tipo in (7,8) ELSE tipo>0 END) and (CASE '{tipo}' WHEN 'E' THEN tipo < 8 WHEN 'S' THEN tipo > 7 ELSE tipo>0 END) ORDER BY descricao