Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chọn các cột từ một bảng dựa trên tên cột từ một bảng khác

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)

Demo cho máy chủ sql

Câu trả lời trước. Hoạt động cho mssql

Xem bản trình diễn cho mysql

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách nhập tệp DBF trong SQL Server

  2. Microsoft SQL Server 2005/2008:Kiểu dữ liệu XML so với text / varchar

  3. SQL Server 2008 không thể bỏ ràng buộc

  4. Nhận root cha mẹ của con trong bảng phân cấp

  5. Cách tìm một chuỗi trong một chuỗi trong SQL Server