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)
Tidligere svar. Virker til mssql
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;