Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come scrivere un nome di attributo nella query di selezione in modo dinamico

Il tuo tavolo sembra non essere nella prima forma normale.

Invece di tre colonne da Period0Id a Period2Id potresti avere una colonna per PeriodIndex con valori di (0,1,2) e una singola colonna per PeriodId e quindi sarebbe solo un WHERE PeriodIndex = @Check

Non puoi selezionare una colonna usando l'interpolazione di stringhe con una variabile mentre stai tentando. È possibile utilizzare l'SQL dinamico per creare la stringa SQL in modo dinamico. O semplicemente codificare le opzioni se hanno tutte lo stesso tipo di dati.

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