sql >> Database >  >> RDS >> Sqlserver

Hoe een attribuutnaam dynamisch naar de selectiequery te schrijven

Uw tabel ziet eruit alsof deze niet in de eerste normale vorm is.

In plaats van drie kolommen voor Period0Id tot Period2Id zou je een kolom kunnen hebben voor PeriodIndex met waarden van (0,1,2) en een enkele kolom voor PeriodId en dan zou het gewoon een WHERE PeriodIndex = @Check zijn

U kunt tijdens uw poging geen kolom selecteren met behulp van tekenreeksinterpolatie met een variabele. U kunt dynamische SQL gebruiken om de SQL-string dynamisch te maken. Of codeer de opties gewoon hard als ze allemaal hetzelfde datatype hebben.

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


  1. mysql-query met zoals %..% in de waar-clausule die verschillende resultaten oplevert

  2. Automatisch importeren van gegevens van mysql naar solr

  3. InnoDB vs. MyISAM querytijd invoegen

  4. Hoe vind je bijna vergelijkbare records in sql?