Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como escrever um nome de atributo para a consulta de seleção dinamicamente


Sua tabela parece não estar na primeira forma normal.

Em vez de três colunas para Period0Id para Period2Id você poderia ter uma coluna para PeriodIndex com valores de (0,1,2) e uma única coluna para PeriodId e então seria apenas um WHERE PeriodIndex = @Check

Você não pode selecionar uma coluna usando interpolação de string com uma variável enquanto está tentando. Você pode usar SQL dinâmico para criar a Cadeia SQL dinamicamente. Ou simplesmente codifique as opções se todas tiverem o mesmo tipo de dados.
Select ID, 
       Name, 
       StatusId = CASE @Check WHEN 0 THEN Period0Id
                              WHEN 1 THEN Period1Id
                              WHEN 2 THEN Period2Id
                   END
From mytable