我最近更改了职位,来自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
答案 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