Câu trả lời trước đây của tôi là dành cho mysql. Vì thẻ đã được cập nhật trên câu hỏi kể từ đó, đây là truy vấn cho sql-server-2008
.
Tạo danh sách các cột từ các giá trị trong table_levels
, xóa ,
cuối cùng , xây dựng một chuỗi truy vấn để bạn nhận được kết quả từ table_results
, và sau đó thực thi.
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)
Câu trả lời trước. Hoạt động cho mssql
Sử dụng GROUP_CONCAT
để tạo một chuỗi từ các giá trị trong table_levels
và sau đó xây dựng một chuỗi truy vấn để bạn nhận được kết quả từ 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;