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

问题描述 投票:118回答:8

我有一个输出当前数据的现有查询,我想将它插入Temp表中,但是我遇到了一些问题。有人会对如何做到这一点有所了解吗?

这是一个例子

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%', '%') 

这似乎以我需要的方式输出我的数据,但我想把它传递到Temp Table。我的问题是我对SQL查询很新,并且无法找到一种方法。或者,如果它是可能的。如果不可能,有没有更好的方法来获取我正在寻找WHERE application LIKE isNull('%MORESTUFF%','%')的数据到临时表?

任何帮助将非常感激!谢谢!

sql sql-server ssms
8个回答
149
投票
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%',
      '%')

116
投票

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

SELECT * 
INTO #temp
FROM (
    SELECT col1, col2
    FROM table1
) AS x

查询失败,最后没有AS x


EDIT

使用SS2016时也需要它,不得不添加as t到最后。

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

27
投票

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

SELECT * INTO #TempTableName
FROM....

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


8
投票

你可以这样做:

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

只需确保列匹配,数量与数据类型相同。


5
投票

就个人而言,我需要一只小手拿着弄清楚如何使用它,这真的很棒。

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

3
投票

试试这个:

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

请使用x的别名,这样脚本和结果都不会失败。


1
投票
SELECT * INTO #TempTable 
FROM SampleTable
WHERE...

SELECT * FROM #TempTable
DROP TABLE #TempTable

0
投票

这个有可能。试试这种方式:

Create Global Temporary Table 
BossaDoSamba 
On Commit Preserve Rows 
As 
select ArtistName, sum(Songs) As NumberOfSongs 
 from Spotfy 
    where ArtistName = 'BossaDoSamba'
 group by ArtistName;
© www.soinside.com 2019 - 2024. All rights reserved.