Предишният ми отговор беше за mysql. Тъй като оттогава етикетът е актуализиран по въпроса, ето заявката за sql-server-2008
.
Създайте списък с колони от стойностите в table_levels
, премахнете последния ,
, създайте низ на заявка, за да получите резултатите от table_results
и след това изпълнете.
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)
Предишен отговор. Работи за mssql
Вижте демонстрация за mysql
Използвайте GROUP_CONCAT
за да направите низ от стойностите в table_levels
и след това изградете низ на заявка, за да получите резултатите от 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;