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

Tạo động của bảng trong tsql

Bạn có thể sử dụng một cái gì đó như thế này không?

DECLARE @Tab VARCHAR(MAX)
SET @Tab = 'CREATE TABLE #Whatever ('

SELECT @Tab = @Tab + QUOTENAME(ColumnName) + ' INT NULL
,'
FROM @This
SELECT @Tab = SUBSTRING(@Tab,1,LEN(@Tab)-1) + ')'
PRINT @Tab
-- EXEC (@Tab)

Hai điểm:Bạn có thể thấy rằng bạn sẽ cần tạo bảng tạm thời mà không sử dụng sql động, sau đó điều chỉnh câu lệnh select để thay đổi bảng; điều này để bảng tồn tại trong ngữ cảnh hiện tại - nếu câu lệnh create đang ở dạng động, bạn có thể gặp lỗi.

Tôi không thích sử dụng sql động như thế này - nếu sau này bạn có thể sử dụng pivot để trả về các cột, đó có thể là một lựa chọn tốt hơn (tôi không chắc liệu nó có khả thi trong trường hợp này hay không).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hướng dẫn cơ sở dữ liệu SQL Server (MSSQL DBA) cho người mới bắt đầu quản trị cơ sở dữ liệu

  2. cách truy cập localDB từ Windows Service

  3. sp_MSForEachDB Sử dụng Không hợp lệ Toán tử Hiệu quả Bên trong Chức năng

  4. Kết nối cơ sở dữ liệu từ xa mở trong thời gian dài

  5. SQL Server không sử dụng chỉ mục so sánh datetime với không null