Mitt tidigare svar var för mysql. Eftersom taggen har uppdaterats på frågan sedan dess, här är frågan för sql-server-2008
.
Bygg en lista med kolumner från värdena i table_levels
, ta bort den sista ,
, bygg en frågesträng för att få dig resultaten från table_results
, och kör sedan.
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)
Tidigare svar. Fungerar för mssql
Använd GROUP_CONCAT
för att göra en sträng av värdena i table_levels
och bygg sedan en frågesträng för att få dig resultaten från 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;