sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man skriver ett attributnamn till urvalsfrågan dynamiskt

Ditt bord ser ut att inte vara i första normala form.

Istället för tre kolumner för Period0Id till Period2Id kan du ha en kolumn för PeriodIndex med värden på (0,1,2) och en enda kolumn för PeriodId och då skulle det bara vara en WHERE PeriodIndex = @Check

Du kan inte välja en kolumn med stränginterpolation med en variabel när du försöker. Du kan använda dynamisk SQL för att skapa SQL-strängen dynamiskt. Eller helt enkelt hårdkoda alternativen om de alla har samma datatyp.

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


  1. Flernivåmeny med PHP/MySQL

  2. Hur SQLite Count() fungerar

  3. hur man använder LINQ till SQL med mySQL

  4. Oracle SQL - Generera och uppdatera en kolumn med olika slumptal i varje rad