Aplicar filtro após fazer primeira verificação na query
31/03/2015
0
select * from (Select cartoes.nome, cartoes.cartao_id, cartoes.titular as cartaotitu, conveniados.chapa, cartoes.codcartimp, conveniados.titular, cartoes.DATA_NASC, conveniados.empres_id, conveniados.cidade, cartoes.dtcadastro, codcartimp as cartao, empresas.nomecartao as empresa, cartoes.conv_id from cartoes join conveniados on conveniados.conv_id = cartoes.conv_id and coalesce(conveniados.apagado,'N') <> 'S' join empresas on empresas.empres_id = conveniados.empres_id where coalesce(cartoes.apagado,'N') <> 'S' and coalesce(cartoes.jaemitido,'N') = 'N' and coalesce(conveniados.liberado,'S') = 'S' and coalesce(cartoes.liberado,'S') = 'S' ) as a where datediff(year,a.DATA_NASC,getdate()) >= 18
preciso retornar os conveniados maiores de 18 anos apenas se a empresa tiver id Empres_id = 455 se não não aplica o filtro: datediff(year, a.Data_Nasc, getdate()) >= 18
Alguém pode me ajudar? Obrigado
Sidnei Junior
Post mais votado
Mais Posts
31/03/2015
Marcos P
Se a ideia é tratar isso em apenas uma execução e na própria query, você deve partir para o uso de uma query dinâmica, que são sempre recomendadas quando a estrutura da consulta variar em função de regras de negócio externas.
Dê uma olhada no link... [url:descricao=Query Dinâmica]https://www.devmedia.com.br/forum/select-com-atributo-in-em-campos-inteiros-e-parametros-varchar/513914[/url]
Senão lhe ajudar, me avise... que trabalhamos na sua query mesmo.
31/03/2015
Sidnei Junior
select * from (Select cartoes.nome, cartoes.cartao_id, cartoes.titular as cartaotitu, conveniados.chapa, cartoes.codcartimp, conveniados.titular, cartoes.DATA_NASC, datediff(year,DATA_NASC,getdate()) as IDADE, conveniados.empres_id, conveniados.cidade, cartoes.dtcadastro, codcartimp as cartao, empresas.nomecartao as empresa, cartoes.conv_id from cartoes join conveniados on conveniados.conv_id = cartoes.conv_id and coalesce(conveniados.apagado,'N') <> 'S' join empresas on empresas.empres_id = conveniados.empres_id where coalesce(cartoes.apagado,'N') <> 'S' and coalesce(cartoes.jaemitido,'N') = 'N' and coalesce(conveniados.liberado,'S') = 'S' and coalesce(cartoes.liberado,'S') = 'S' AND CONVENIADOS.CONV_ID = 120695 ) as a where (a.EMPRES_ID !=455 or datediff(year,a.DATA_NASC,getdate()) >= 18)
na verdade o or resolveu minha vida. Obrigado
31/03/2015
Thiago Santana
Clique aqui para fazer login e interagir na Comunidade :)