Ir para conteúdo
  • Cadastre-se

dev botao

(firebird) clausula where


Recommended Posts

Ola boa tarde,   tenho uma tabela definida como regras de tributacao   que uso para definir regras de dados de tributacao sendo po r ncm,empresa,uf,tipopessoa, etc

vou exemplificar aqui pra um campo  ( UF )

criou as regras por estado :

UF | DESCRICAO

PR - Regra do Parana

SC- Regra de Santa Catarina

XX- Regra para qualquer/todos UF  -- uso esse registro para casos de mesma regras para varios estados. ( evita ter q. digitar a mesma regra N vezes )

clausula where  esta escrita    ( uf = :A  or uf='XX' )

para uma busca no estado MT ( UF='MT' or UF='XX' )  ele traz  o registro XX como deve ser ,  por que ? ,  pois nao tem regra para aquela UF , pega regra XX

para uma busca no estado PR (  UF='PR' or UF='XX') ele traz os registros PR e XX , mas preciso q. traga somente PR

se a busca fosse somente por UF um  order by resolveria pois o registro XX ficaria sempre no final, mas a busca envolve outros campos 

 

select a.*
from nota_regratributacao a
where  a.ncm= '63090010'
  and ( a.id_empresa = 1 or a.id_empresa = 0 )
  and ( a.uf = 'PR' or a.uf = 'XX' )
  and ( a.id_produto = 1364 or a.id_produto = 0 )
  and ( a.tipo_pessoa = '0' or a.tipo_pessoa = 0 )
  and ( a.tipo_consumidor = '9' or a.tipo_consumidor = 0 )
  and ( a.tipo_regime = '0' or a.tipo_regime = 0 )

esse é um exemplo   

Resumindo a obra   : eu precisa q. o where  me retorne  quando  UF = true  nao  retorne UF=XX, é possivel na mesma clausula where ?

 

 

 

 

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.