Sql 使用查询将数据插入临时表

Sql 使用查询将数据插入临时表,sql,sql-server,ssms,Sql,Sql Server,Ssms,我有一个输出当前数据的现有查询,我想将其插入临时表中,但在这样做时遇到一些问题。有人知道怎么做吗 这里有一个例子 SELECT * FROM (SELECT Received, Total, Answer, ( CASE WHEN application LIKE '%STUFF%' THEN 'MORESTUFF' END ) AS appl

我有一个输出当前数据的现有查询,我想将其插入临时表中,但在这样做时遇到一些问题。有人知道怎么做吗

这里有一个例子

SELECT *
FROM  (SELECT Received,
              Total,
              Answer,
              ( CASE
                  WHEN application LIKE '%STUFF%' THEN 'MORESTUFF'
                END ) AS application
       FROM   FirstTable
       WHERE  Recieved = 1
              AND application = 'MORESTUFF'
       GROUP  BY CASE
                   WHEN application LIKE '%STUFF%' THEN 'MORESTUFF'
                 END) data
WHERE  application LIKE isNull('%MORESTUFF%', '%') 

这似乎是我当前输出数据的方式,我需要它,但我想把它传递到一个临时表。我的问题是,我对SQL查询非常陌生,还没有找到这样做的方法。或者如果可能的话。如果不可能,是否有更好的方法将我要查找的数据(如应用程序为null的“%MORESTUFF%”、“%”)获取到临时表中?

您可以这样做:

INSERT INTO myTable (colum1, column2)
SELECT column1, column2 FROM OtherTable;

只需确保列的数量和数据类型都匹配。

最快的方法是使用SELECT INTO命令,例如

SELECT * INTO #TempTableName
FROM....

这将创建一个新表,您不必提前创建它。

SQL Server R2 2008需要AS子句,如下所示:

SELECT *
INTO #Temp
FROM

  (SELECT
     Received,
     Total,
     Answer,
     (CASE WHEN application LIKE '%STUFF%' THEN 'MORESTUFF' END) AS application
   FROM
     FirstTable
   WHERE
     Recieved = 1 AND
     application = 'MORESTUFF'
   GROUP BY
     CASE WHEN application LIKE '%STUFF%' THEN 'MORESTUFF' END) data
WHERE
  application LIKE
    isNull(
      '%MORESTUFF%',
      '%')
SELECT * 
INTO #temp
FROM (
    SELECT col1, col2
    FROM table1
) AS x
查询失败,末尾没有AS x

编辑

在使用SS2016时也需要它,必须将as t添加到末尾

 Select * into #result from (SELECT * FROM  #temp where [id] = @id) as t //<-- as t
试试这个:

SELECT *
INTO #Temp
FROM 
(select * from tblorders where busidate ='2016-11-24' and locationID=12
) as X

请将alias与x一起使用,以便它不会使脚本和结果失败

就我个人而言,我需要一点时间来掌握如何使用它,这真是太棒了

IF(OBJECT_ID('tempdb..#TEMP') IS NOT NULL) BEGIN DROP TABLE #TEMP END
        SELECT *
            INTO #TEMP
            FROM (
            The query you want to use many times
            ) AS X

SELECT * FROM #TEMP WHERE THIS = THAT
SELECT * FROM #TEMP WHERE THIS <> THAT
SELECT COL1,COL3 FROM #TEMP WHERE THIS > THAT

DROP TABLE #TEMP
这是可能的。 试着这样做:

Create Global Temporary Table 
BossaDoSamba 
On Commit Preserve Rows 
As 
select ArtistName, sum(Songs) As NumberOfSongs 
 from Spotfy 
    where ArtistName = 'BossaDoSamba'
 group by ArtistName;
在查询结束时使用as

选择*进入临时状态
从表1、表2中选择*作为临时表

到一个已经存在的临时表中,或者它需要创建一个新的临时表?@MartinSmith-这将是一个新的临时表。例如ISNULL“%MORESTUFF%”,“%”将始终与“%MORESTUFF%”相同,不是吗?由于“%MORESTUFF%”字符串文字永远不为空?是否可以将列添加到试探性名称?@FrenkyB是的,一旦创建了表,您就可以使用ALTER table add COLUMN语句。正确,我遇到了试探性已创建错误,我们不需要单独创建,它会动态创建!得体的有趣的我也有同样的问题。在末尾添加As[x]使一切正常工作。这是为什么?@godfathr这是因为from子句使用了派生的table额外的drop table东西很方便
Create Global Temporary Table 
BossaDoSamba 
On Commit Preserve Rows 
As 
select ArtistName, sum(Songs) As NumberOfSongs 
 from Spotfy 
    where ArtistName = 'BossaDoSamba'
 group by ArtistName;