Jay*_*Jay 3 t-sql sql-server sql-server-2008
我有一个临时表来聚合多个表中的列.
我想将此临时表转换为永久表,而无需明确指定列名称及其类型.
不知道我是否已经解释得这么好了
你可以使用SELECT ... INTO:
SELECT *
INTO dbo.normal_table
FROM #temp_table
-- WHERE 1 = 2; --add if you only want table structure and not actual data
Run Code Online (Sandbox Code Playgroud)
创建表后要检查的事项:
IDENTITY 列和当前值(可能需要重新播种)DEFAULT列的值(如果临时表有默认值,则需要ALTER编辑普通表)COLLATION tempdb可能具有与数据库不同的排序规则VARCHAR,NVARCHAR,CHAR,DECIMAL..)如果SELECT包含表达式如果临时表不包含IDENTITY列,您可以使用以下命令添加:
SELECT ID = IDENTITY(INT,1,1)
,col1 = NULL -- NULL by default are treated as INT so you may need casting
,col2 = CAST(NULL AS DECIMAL(38,10))
,t.*
INTO dbo.table_name
FROM #temp t
Run Code Online (Sandbox Code Playgroud)