sql >> Database teknologi >  >> RDS >> Sqlserver

Vælg kolonner fra én tabel baseret på kolonnenavnene fra en anden tabel

Mit tidligere svar var for mysql. Da tagget er blevet opdateret på spørgsmålet siden da, er her forespørgslen til sql-server-2008 .

Byg en liste over kolonner ud fra værdierne i table_levels , fjern den sidste , , opbyg en forespørgselsstreng for at få dig resultaterne fra table_results , og udfør derefter.

DECLARE @listStr varchar(MAX) = ( select selectColumnName + ',' from table_levels where level = 1 for xml path(''))
DECLARE @query varchar(MAX) = 'SELECT ' + LEFT(@listStr, LEN(@listStr)-1) + ' FROM table_results'
execute(@query)

Demo til sql-server

Tidligere svar. Virker til mssql

Se demo for mysql

Brug GROUP_CONCAT at lave en streng ud af værdierne i table_levels og opbyg derefter en forespørgselsstreng for at få dig resultaterne fra table_results

SET @listStr = ( SELECT GROUP_CONCAT(selectColumnName) FROM table_levels where level = 1);
SET @query := CONCAT('SELECT ', @listStr, ' FROM table_results');
PREPARE STMT FROM @query;
EXECUTE STMT;


  1. Cloud 9 IDE kan ikke oprette forbindelse til databasen

  2. SQL-anmodning for at finde ud af, om en periode er fuldt dækket

  3. Operand bør indeholde 1 kolonne - MySQL NOT IN

  4. SQLite3 og Postgres/Heroku Ruby on Rails Query problemer