Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak dynamicznie wpisać nazwę atrybutu do zapytania wybierającego?

Twój stół wygląda tak, jakby nie był w pierwszej normalnej formie.

Zamiast trzech kolumn dla Period0Id do Period2Id możesz mieć kolumnę dla PeriodIndex z wartościami (0,1,2) i pojedynczą kolumnę dla PeriodId i wtedy byłoby to po prostu WHERE PeriodIndex = @Check

Nie możesz wybrać kolumny za pomocą interpolacji ciągów ze zmienną podczas próby. Możesz użyć dynamicznego SQL do dynamicznego tworzenia ciągu SQL. Lub po prostu zakoduj opcje, jeśli wszystkie mają ten sam typ danych.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wstawić rekord i zwrócić nowo utworzony identyfikator za pomocą jednego SqlCommand?

  2. Jak wstawić obiekt blob do bazy danych za pomocą studia zarządzania serwerem sql

  3. Uruchomienie tego samego zapytania SQL w jednej bazie danych trwa dłużej niż w innej bazie danych na tym samym serwerze

  4. Jaka jest korzyść z używania SET XACT_ABORT ON w procedurze składowanej?

  5. Jak debugować komponent skryptu w SSIS