2013-11-20 46 views
85

我有一個現有的查詢輸出當前數據,我想將其插入到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%', '%') 

這似乎輸出我的數據目前,我需要它的方式,但我想它傳遞到一個臨時表。我的問題是,我對SQL查詢很陌生,一直沒能找到辦法。或者如果這是可能的。如果這是不可能的,有沒有更好的方法來獲得我正在尋找WHERE application LIKE isNull('%MORESTUFF%','%')到臨時表中的數據?

任何幫助將不勝感激!謝謝!

+2

到一個已經存在的'#temp'表中,或者它需要創建一個新的? –

+1

@MartinSmith - 這將是一個新的。 – scapegoat17

回答

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

可以是這樣做的:

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

只需確保列匹配,無論是在數量的數據類型。

21

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

SELECT * INTO #TempTableName 
FROM.... 

這將創建一個新表,您不必事先創建它。

+0

是否可以向#TempTableName添加列? – FrenkyB

+0

@FrenkyB是的,一旦創建了表,您可以使用ALTER TABLE ADD COLUMN語句 –

86

的SQL Server 2008 R2需要AS條款如下:

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

查詢沒有AS x末失敗。

+4

有趣。我只是有同樣的問題。在最後添加「As [x]」使一切正常工作。爲什麼是這樣? – godfathr

+2

@godfathr這是因爲from子句使用派生表 – wootscootinboogie

2

試試這個:

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

請使用別名爲x,所以它不會失敗的腳本和結果。

2

就我個人而言,我需要一個小小的手來搞清楚如何使用它,它真的很棒。

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 
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; 
相關問題