Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So schreiben Sie einen Attributnamen dynamisch in die Auswahlabfrage

Ihre Tabelle sieht aus, als wäre sie nicht in der ersten Normalform.

Anstelle von drei Spalten für Period0Id bis Period2Id könnten Sie eine Spalte für PeriodIndex mit Werten von (0,1,2) und eine einzelne Spalte für PeriodId haben und dann wäre es nur ein WHERE PeriodIndex = @Check

Sie können keine Spalte auswählen, indem Sie eine Zeichenfolgeninterpolation mit einer Variablen verwenden, während Sie dies versuchen. Sie können dynamisches SQL verwenden, um die SQL-Zeichenfolge dynamisch zu erstellen. Oder codieren Sie die Optionen einfach fest, wenn sie alle den gleichen Datentyp haben.

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