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).