我有一个临时表来聚合多个表中的列.
我想将此临时表转换为永久表,而无需明确指定列名称及其类型.
不知道我是否已经解释得这么好了
你可以使用SELECT ... INTO
:
SELECT * INTO dbo.normal_table FROM #temp_table -- WHERE 1 = 2; --add if you only want table structure and not actual data
创建表后要检查的事项:
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