创建Microsoft SQL临时表(不声明列 - 如Informix)?

时间:2013-11-18 20:13:16

标签: sql sql-server

我最近更改了职位,来自Informix数据库环境,我可以使用SQL语句选择一个或多个列......并将输出定向到临时表。在Informix中,对于临时表,我既不需要声明列名,也不需要声明列长度(只有临时表的名称) - 我可以简单地写一下:

  

从中选择[columnname1,columnname2,columnname3 ..]   [database.tablename] where ...等到temp tablename1没有日志;

请注意,在Informix中,临时表默认存储列名...以及数据类型[凭借临时表中存储的数据类型]。因此,如果上述语句被执行,那么开发人员只能写:

  

从tablename1

中选择columname1,columnname2等

根据我的经验,我发现这种方法非常有用 - 出于多种原因(“切片/切割”数据,使用各种数据源等)......以及极其快速和高效。

但是,现在我使用的是Microsoft SQL Server,我还没有找到一种方法(还)做同样的事情。在SQL Server中,我必须声明每个列及其长度

  

创建表#tablename1(column1 numeric(13,0));

     

插入到#tablename1(column1)中选择[column]   [database.tablename]其中......

     

[然后根据需要使用信息]:

     

从#tablename1中选择* [并做点什么...]

     

删除表#tablename1

有谁知道如何在Microsoft SQL Server中执行此操作和/或设置此功能?我查看了匿名表(即表值构造函数:http://technet.microsoft.com/en-us/library/dd776382.aspx)......但是指导说明仍然需要声明列。

提前谢谢 - jrd

3 个答案:

答案 0 :(得分:2)

语法为:

select [columnname1], [columnname2], [columnname3]  into tablename1 from [database].[schema].[tablename] where... 
如果您希望表格是临时的,则

前缀tablename1#

答案 1 :(得分:2)

应该注意的是,虽然您可以使用以下语法:

SELECT col1, col2...
INTO #tempTable1
FROM TABLEA

您还应该提供计算列名称。 这样你就得到了:

SELECT col1, col2...,AVG(col9) AS avgCol9
INTO #tempTable1
FROM TABLEA

答案 2 :(得分:0)

在sql server中非常简单,所有你需要做的就是

SELECT Column1, Column2, Column3,......  INTO #Temp
FROM Table_Name 

此语句将创建临时表,将数据和数据类型全部复制到临时表。 #符号使此表成为临时表,您也可以使用相同的语法创建表,但没有#符号,如下所示

SELECT Column1, Column2, Column3,......  INTO New_Table_Name
FROM Table_Name