Here is my attempt :
DECLARE @tableName NVARCHAR(256) = 'dbo.test'
DECLARE @sql NVARCHAR(MAX) = ''
DECLARE @columnDefinitions NVARCHAR(MAX) = ''
-- Get column definitions
SELECT @columnDefinitions += '[' + COLUMN_NAME + '] ' + DATA_TYPE +
CASE WHEN DATA_TYPE IN ('char', 'nchar', 'varchar', 'nvarchar') THEN
'(' + CASE WHEN CHARACTER_MAXIMUM_LENGTH = -1 THEN 'MAX' ELSE CAST(CHARACTER_MAXIMUM_LENGTH AS NVARCHAR) END + ')'
ELSE '' END + ',' + CHAR(10)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA + '.' + TABLE_NAME = @tableName
ORDER BY ORDINAL_POSITION
-- Construct the CREATE TABLE statement
SET @sql = 'CREATE TABLE ' + @tableName + ' (' + CHAR(10) + @columnDefinitions + ');'
PRINT @sql
The script will print a very basic "CREATE TABLE" statement, but it doesn't handle primary keys, foreign keys, unique constraints, indexes, or other complex features.
Please try and tell us :)