sql >> Databáze >  >> RDS >> Sqlserver

Jak dynamicky zapsat název atributu do výběrového dotazu

Váš stůl vypadá, že není v první normální podobě.

Místo tří sloupců pro Period0Id až Period2Id byste mohli mít sloupec pro PeriodIndex s hodnotami (0,1,2) a jeden sloupec pro PeriodId a pak by to bylo jen WHERE PeriodIndex = @Check

Nemůžete vybrat sloupec pomocí řetězcové interpolace s proměnnou, jak se pokoušíte. Dynamický SQL můžete použít k dynamickému vytvoření řetězce SQL. Nebo jednoduše pevně zakódujte možnosti, pokud mají všechny stejný datový typ.

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


  1. SQL - Dotaz k získání IP adresy serveru

  2. Mapování jedné třídy Entity do dvou různých databází (Oracle a Ingres)

  3. Jak najít minimální hodnoty ve sloupcích

  4. Účinky změny nastavení NLS_LANG v registru pro klienta Oracle