Inquiridor
Dúvida : Retorno de registro em um select dependendo de uma situação especifica

Pergunta
-
Olá pessoal, bom dia.
Tenho problemas numa query que não sei como proceder,e gostaria de saber,por favor,se vcs poderiam me dar uma força a resolver este caso.
A situação é que tenho uma tabela chamada LOG_DE_PARAMETROS e tenho como colunas [IDPARAMETROS],[TPPARAMETRO],[FKCONSULTA], [PARAMETRO].Eu tenho como objetivo fazer um select desses elementos com base no [FKCONSULTA]e dependendo da situação que aparecer(e que eu vou citar abaixo),eu não retorno dado nenhum.
A situação que está me ocorrendo o problema é essa:
Ao executar essa rotina usando uma FKCONSULTA aleatória, ela retorna 2 ou mais dados,conforme exemplo de rotina e resultado abaixo:
Rotina :
SELECT * from LOG_DE_PARAMETROS where FKCONSULTA= '2685563'
Resultado :
[IDPARAMETROS] [TPPARAMETRO] [FKCONSULTA] [PARAMETRO]
3075885 12 2685563 XYZA123
3075886 18 2685563 BOV-------------------------------------------------------------------------------------------------------------------------------------------------------------
O que eu preciso fazer é mostrar o resultado limpo(sem registros/tuplas) caso apareça a palavra BOV no campo [PARAMETRO],mesmo que apareça dois registros ou mais na FKCONSULTA;caso não apareça a palavra 'BOV', o resultado é mostrado normalmente.
Como proceder??
Desde já,muito obrigado.
Att,
Guilherme Pereira
- Editado gppereira3 sexta-feira, 22 de outubro de 2010 15:38
Todas as Respostas
-
Bom dia Gppereira3,
Não sei se entendi direito o que você precisa mas pelo que entendi se a coluna PARAMETRO estiver com o valor BOV então todas as outras colunas recebem 0, correto?
Se for segue um exemplo, não sei se é o melhor jeito de tratar este cenário mas trará o resultado esperado.
declare @LOG_DE_PARAMETROS as table(
IDPARAMETROS int,
TPPARAMETRO int,
FKCONSULTA int,
PARAMETRO varchar(10))
insert into @LOG_DE_PARAMETROS values(3075885,12,2685563,'XYZA123');
insert into @LOG_DE_PARAMETROS values(3075886,18,2685563,'BOV');
select
case parametro
when 'BOV' then 0
else IDPARAMETROS end as IDPARAMETROS,
case parametro
when 'BOV' then 0
else TPPARAMETRO end as TPPARAMETRO,
case parametro
when 'BOV' then 0
else FKCONSULTA end as FKCONSULTA,
case parametro
when 'BOV' then '0'
else parametro end as parametro
from @LOG_DE_PARAMETROS;
Qualquer problema notifique-me.
Att,
Adriano Nascimento
-
Adriano, boa tarde.
Na verdade, o que eu preciso fazer é mostrar o resultado limpo(sem tuplas) caso apareça a palavra BOV no campo [PARAMETRO],mesmo que apareça dois registros ou mais na FKCONSULTA;caso não apareça a palavra 'BOV', o resultado é mostrado normalmente.
Peço desculpas por não ter entendido o tópico direito.
-
-
Guilherme,
Você deseja fazer esta análise através de um comando condicional algo do tipo IF?
Caso contrário a dica do Alisson Cardoso é uma alternativa interessante fazendo uso de operador lógico condicional Not Exists com base em uma subquery.
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]