sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo escribir un nombre de atributo en la consulta de selección dinámicamente

Parece que su tabla no está en la primera forma normal.

En lugar de tres columnas para Period0Id a Period2Id, podría tener una columna para PeriodIndex con valores de (0,1,2) y una sola columna para PeriodId y luego sería solo un WHERE PeriodIndex = @Check

No puede seleccionar una columna usando la interpolación de cadenas con una variable como lo está intentando. Puede usar SQL dinámico para crear la cadena SQL dinámicamente. O simplemente codifique las opciones si todas tienen el mismo tipo de datos.

Select ID, 
       Name, 
       StatusId = CASE @Check WHEN 0 THEN Period0Id
                              WHEN 1 THEN Period1Id
                              WHEN 2 THEN Period2Id
                   END
From mytable