SQL - selecao dinamica de campos

Top  Previous  Next

Existem varias maneiras de resolver isto.

 

Essa eu testei (Flavio)

 

   Select Codigo,Descricao,T1 as Escolhido,T1, T2

   From Produtos

   Where Codigo>2

 

 Union  

 

   Select  Codigo,Descricao,T2 as Escolhido, T1, T2

   From Produtos

   Where Codigo<=2

 

 Order by Escolhido

 

// Aqui mostra na coluna "Escolhido" o valor T1 quando

o código for > 2 e valor T2 quando o código for < = 2

 

------------------------------------------------------------

SELECT CASE WHEN "Campo Lógico" > 0 THEN "Preço 1"

ELSE "Preco 2END

FROM "Produtos"

------------------------------------------------------------

Em Oracle seria assim:

Select Decode(CampoLogico, Preco1, preco2) from produtos.

------------------------------------------------------------

Em Access:

Select if(CampoLogico, Preco1, preco2) from produtos

------------------------------------------------------------

Em Access em portugues:

Select Semed(CampoLogico, Preco1, preco2) from produtos

------------------------------------------------------------

Porém vc devia pensar um pouco no seu modelo de dados.

Este tipo de consulta normalmente é resultado de modelagem falha.

------------------------------------------------------------

Se quiser você poderá fazer uma união de duas consultas. Exemplo:

 

Select

  Preco1

Where CampoLogico

From <Tabela>

 

Union

 

Select

  Preco2

Where  CampoLogico

From <Tabela>